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

打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3034

需求描述

测试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代码:
  1. int fputc(int ch, FILE *file)
  2. {
  3.   HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
  4.   return ch;
  5. }
复制代码
3》Interface文件下的esp32.h文件:
  1. #ifndef __ESP32_H__
  2. #define __ESP32_H__
  3. #include "usart.h"
  4. #include "string.h"
  5. void ESP32_Init(void);
  6. //发送命令
  7. void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen);
  8. //读取响应
  9. void ESP32_ReadResp(uint8_t buff[],uint16_t *len);
  10. #endif /* __ESP32_H__ */
复制代码
4》Interface文件下的esp32.c文件:
  1. #include "esp32.h"
  2. //定义全局变量,接收响应缓冲区和长度
  3. uint8_t respBuff[1024];
  4. uint16_t resplen;
  5. void ESP32_Init(void)
  6. {
  7.     //1 初始化串口2
  8.     MX_USART2_UART_Init();
  9.     // 2 发送AT指令 复位ESP32
  10.     uint8_t *cmd = "AT+RST=0\r\n";
  11.     ESP32_SendCmd(cmd,strlen((char *)cmd));
  12.     //3 引入延时,确保重启成功
  13.     HAL_Delay(2000);
  14. }
  15. //发送命令
  16. void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen)
  17. {
  18.     // 先清空
  19.     memset(respBuff,0,1024);
  20.     //直接通过串口2发送命令
  21.     HAL_UART_Transmit(&huart2,cmd,cmdLen,1000);
  22.     // 读取响应
  23.     do
  24.     {
  25.         ESP32_ReadResp(respBuff,&resplen);
  26.     }while(strstr((char *)respBuff,"OK") == NULL);
  27.     //将响应打印输出
  28.     printf("%.*s\n",resplen,respBuff);
  29. }
  30. //读取响应
  31. void ESP32_ReadResp(uint8_t buff[],uint16_t *len)
  32. {
  33.     //串口2 接收变长数据
  34.     HAL_UARTEx_ReceiveToIdle(&huart2,buff,1024,len,1000);;
  35. }
复制代码
5》main.c文件:
添加
  1. #include "esp32.h"
复制代码
int main(void)大括号下添加
  1.   printf("测试AT指令...\n");
  2.   ESP32_Init();
  3.   printf("esp32初始化完成\n");
  4.   uint8_t *cmd = "AT\r\n";
  5.   ESP32_SendCmd(cmd,strlen((char *)cmd));
  6.   cmd = "AT+GMR\r\n";
  7.   ESP32_SendCmd(cmd,strlen((char *)cmd));
复制代码
结果图:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表