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));

效果图:

相关推荐
FreakStudio11 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484917 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150017 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼17 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
牛根生同志17 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
wohoo_wangzi17 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
goldenrolan17 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展17 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件