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

效果图:

相关推荐
小莞尔1 小时前
【51单片机】【protues仿真】基于51单片机火灾报警系统
单片机·嵌入式硬件
qiuiuiu4132 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
易享电子2 小时前
基于单片机智能台灯(调光,时钟)系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
hazy1k3 小时前
51单片机基础-动态数码管显示
stm32·单片机·嵌入式硬件·51单片机
Heavy sea3 小时前
STM32 DMA直接存储器访问(寄存器与HAL库实现)
stm32·单片机
漫夜8553 小时前
MCU和GPIO (1)
单片机·嵌入式硬件
点灯小铭3 小时前
基于单片机的智能洗碗机设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
ShiMetaPi4 小时前
操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:音频接口
arm开发·嵌入式硬件·fpga开发·rk3568
BreezeJuvenile6 小时前
外设模块学习(5)——DS18B20温度传感器(STM32)
stm32·嵌入式硬件·学习·温度传感器·ds18b20
hollq8 小时前
STM32F103RCT6+STM32CubeMX+keil5(MDK-ARM)+Flymcu实现串口重定向
arm开发·stm32·嵌入式硬件