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代码:

cs 复制代码
int fputc(int ch, FILE *file)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
  return ch;
}

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

cs 复制代码
#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文件:

cs 复制代码
#include "esp32.h"


//定义全局变量,接收响应缓冲区和长度
uint8_t respBuff[1024];
uint16_t resplen;

void ESP32_Init(void)
{
    //1 初始化串口2
    MX_USART2_UART_Init();

    // 2 发送AT指令 复位ESP32
    uint8_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文件:

添加

cs 复制代码
#include "esp32.h"

int main(void)大括号下添加

cs 复制代码
  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));

效果图:

相关推荐
Lester_110117 分钟前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos
阿超爱嵌入式1 小时前
STM32学习之I2C(理论篇)
stm32·嵌入式硬件·学习
三月雪落无痕3 小时前
altium designer2024绘制stm32过程笔记x`
笔记·嵌入式硬件
天天爱吃肉82185 小时前
新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
android·python·嵌入式硬件·汽车
章鱼哥嵌入式开发5 小时前
# STM32F103 SD卡读写程序
stm32·单片机
广药门徒7 小时前
定时器时钟来源可以从输入捕获引脚输入
单片机·嵌入式硬件
爱睡觉的王宇昊10 小时前
二、【ESP32开发全栈指南:ESP32 GPIO深度使用】
单片机·嵌入式硬件
学生哥-_-16 小时前
STM32通过KEIL pack包轻松移植LVGL,并学会使用GUI guider
stm32·lvgl·tftlcd·gui guider·gt911
三三十二16 小时前
STM32实战:数字音频播放器开发指南
stm32·单片机·嵌入式硬件
想搞嵌入式的小白18 小时前
STM32外设问题总结
单片机·嵌入式硬件