STM32 高级 WIFi案例1:测试AT指令

需求描述

测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。

思路:

stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。

配置:

第一步:对ESP32芯片烧录可以读取stm32命令的固件(factory_MINI-1.bin)。

第二步:打开cubeMAX->配置usart1和usart2,在原理图中,STM32通过usart2和ESP32连接。

第三步:新建Interface文件-》新建esp.c和esp.h文件。

cubeMAX配置图:

keil配置:引入esp.c文件,path中添加.h路径

代码书写流程:

1》usart.h文件->引入#include<stdio.h>

2》usart.c文件:重写printf代码:

int fputc(int ch, FILE *file)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);return ch;
}

3》Interface文件下的esp32.h文件:

#ifndef __ESP32_H__
#define __ESP32_H__#include "usart.h"
#include "string.h"
void ESP32_Init(void);//发送命令
void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen);//读取响应
void ESP32_ReadResp(uint8_t buff[],uint16_t *len);#endif /* __ESP32_H__ */

4》Interface文件下的esp32.c文件:

#include "esp32.h"//定义全局变量,接收响应缓冲区和长度
uint8_t respBuff[1024];
uint16_t resplen;void ESP32_Init(void)
{//1 初始化串口2MX_USART2_UART_Init();// 2 发送AT指令 复位ESP32uint8_t *cmd = "AT+RST=0\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));//3 引入延时,确保重启成功HAL_Delay(2000);
}//发送命令
void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen)
{// 先清空memset(respBuff,0,1024);//直接通过串口2发送命令HAL_UART_Transmit(&huart2,cmd,cmdLen,1000);// 读取响应do{ESP32_ReadResp(respBuff,&resplen);}while(strstr((char *)respBuff,"OK") == NULL);//将响应打印输出printf("%.*s\n",resplen,respBuff);
}//读取响应
void ESP32_ReadResp(uint8_t buff[],uint16_t *len)
{//串口2 接收变长数据HAL_UARTEx_ReceiveToIdle(&huart2,buff,1024,len,1000);;
}

5》main.c文件:

添加

#include "esp32.h"

int main(void)大括号下添加

  printf("测试AT指令...\n");ESP32_Init();printf("esp32初始化完成\n");uint8_t *cmd = "AT\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));cmd = "AT+GMR\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL查看日志

目录 1. 日志 1.1 错误日志 1.2 二进制日志 1.2.1 介绍 1.2.2 格式 1.2.3 查看 1.2.4 删除 1.3 查询日志 1.4 慢查询日志 1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过 程…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化&#xff1f; Docker是一个开源容器化工具&#xff0c;用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中&#xff0c;为了将Spring B…

机器人基础-自由度及其简单计算

机器人基础-自由度及其简单计算 1.自由度&#xff08;DOF&#xff09;2.自由度的计算3.自由度计算例题例1.例2.例3. 对于一个机器人的手腕&#xff0c;一般要求实现对空间坐标轴X、Y、Z的旋转运动&#xff0c;分别是翻/回转&#xff08;Roll&#xff09;、俯仰&#xff08;Pitc…

c# WaitSleepJoin状态的线程如何自动恢复

在 C# 中&#xff0c;线程的 ThreadState.WaitSleepJoin 状态表示线程当前处于等待、睡眠或加入&#xff08;比如等待锁、等待事件、或者调用 Thread.Sleep 等&#xff09;。要让一个处于 WaitSleepJoin 状态的线程恢复运行&#xff0c;必须唤醒它或让它不再被阻塞。这通常通过…

初学stm32---高级定时器输出n个pwm波

目录 高级定时器简介&#xff1a;(F1) 高级定时器框图 重复计数器特性 高级定时器输出指定个数PWM实验原理 高级定时器输出指定个数PWM实验配置步骤 相关HAL库函数介绍 关键结构体介绍 高级定时器简介&#xff1a;(F1) 1.高级定时器 &#xff1a;TIM1/TIM8 2.主要特性&…

【每日学点鸿蒙知识】Shape描述、全局loading组件、checkbox样式、H5监听键盘收起、弹窗不关闭

1、HarmonyOS 有没有xml描述的Shape&#xff1f; 有没有xml描述的Shape&#xff1f; 官方文档有对用的Shape的参考文档&#xff0c;参考链接&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-drawing-components-shape-V5 绘制组件的父…

完整的 FFmpeg 命令使用教程

FFmpeg 是一个开源的跨平台音视频处理工具&#xff0c;它能够处理几乎所有的视频、音频格式&#xff0c;并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面&#xff08;CLI&#xff09;操作&#xff0c;尽管有一些图形界面的前端工具&#xff…

Mono里运行C#脚本5—mono_file_map_open

前面介绍了mono_jit_init初始化,这个函数非常长,要理解起来还是比较困难。因此改变另外一种方式,先从底层的函数开始,再慢慢来探索mono的底层实现,以及它的实现原理,运行的细节。 Mono要运行exe文件,这里是运行test-embed.exe文件,那么就得认识这个文件,解释这个文件的…

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql&#xff0c;明明在开发、测试环境都可以一把执行通过&#xff0c;却在预发环境执行前的语法检查失败了&#xff0c;提示有SQL语法错误。 这条SQL长这样&#xff0c;default_sql是要在odps上执行的sql语句&#xff0c;提…

matlab中的cell

在MATLAB中&#xff0c;cell 是一种非常重要的数据类型&#xff0c;它能够存储不同类型和大小的数据&#xff0c;这使得它非常灵活&#xff0c;适用于处理复杂的数据结构。 1. 基本介绍 cell 类型的变量可以存储不同类型的数据&#xff0c;如数值、字符、结构体、甚至其他的 …

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探&#xff1a;鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…

网络基础入门到深入(2):网络协议-TCP/IP协议栈

目录 一.TCP/IP协议栈的四层结构 二.每一层的作用与协议 1.作用层 作用&#xff1a; 常见协议: 示例: 2.传输层 作用: 核心功能: 3.网络层 作用: 核心功能: 常见协议: 示例: 4.数据链路层(物理层) 作用: 核心功能: 常见技术: 示例: 三.TCP/IP协议栈的分层…

C语言 练习

1.按顺序打印三个数 //按大小顺序打印三个数字 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp; } int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);if (a < b){Swap(&a,&b);}if (a < c){Swap(&am…

爱思唯尔word模板

爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接

flask后端开发(3):html模板渲染

目录 渲染模板html模板获取路由参数 gitcode地址&#xff1a; https://gitcode.com/qq_43920838/flask_project.git 渲染模板 这样就能够通过html文件来渲染前端&#xff0c;而不是通过return了 html模板获取路由参数

Spring发布-订阅模式:解耦与异步通信的高效实现

文章目录 前言一、发布订阅模式的基本概念二、发布订阅模式的实现1、定义事件2、发布事件3、订阅事件3.1、ApplicationListener接口3.2、EventListener注解3.3、事件源Object source的作用 三、开发应用场景1、社交网络平台2、电商系统3、金融交易系统 总结 前言 Spring框架通过…

配置hive支持中文注释

hive元数据metastore默认的字符集是latin1&#xff0c;所以中文注释会乱码。但是不能将metastore库的字符集更改为utf-8&#xff0c;只能对特定表、特定列修改为utf-8。配置hive支持中文注释&#xff0c;主要在两个方面&#xff1a; 1、在Hive元数据存储的Mysql数据库中&#…

python实战案例笔记:统计出数据中路劲下没有文件的文件夹

数据样例&#xff1a;&#x1f447;有如下excel数据 需求&#xff1a;有如下excel&#xff0c;a.xls&#xff0c;统计出路劲下没有文件的路劲 详细实现代码&#xff1a; import os from openpyxl import Workbook from datetime import datetimedef get_empty_dirs(paths):# …

docker使用国内镜像

可用地址 https://docker.m.daocloud.io https://docker.rainbond.cc https://docker.1ms.run方法1:配置(需要重启docker) sudo vim /etc/docker/daemon.json # 在registry-mirrors中添加地址(没有的就直接创建了) #比如 {"registry-mirrors": ["https://dock…