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

效果图:

相关推荐
irislinAmelia10 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
糖糖单片机设计11 小时前
基于 STM32 的植物生长环境监控系统
stm32·单片机·嵌入式硬件
创界工坊工作室11 小时前
56-基于STC89C52的智能声控饮水机设计
stm32·单片机·嵌入式硬件·51单片机·proteus
LCG米11 小时前
STM32 DMA 多通道链式传输实测:请求仲裁顺序错位根因、半满中断乒乓与高速并发搬运落地
stm32·单片机·嵌入式·1024程序员节
hkj880812 小时前
stm32 ADC DMA 循环模式配合双缓冲分块(Ping-Pong)
stm32·单片机·嵌入式硬件
POMAGTOR14 小时前
【磁吸式连接器选型工程解析:结构原理、应用场景与选型可靠性要点】
网络·嵌入式硬件
RFID科技的魅力15 小时前
2026 年 RFID 资产标签批量制作怎么做?RFID 标签打印机实操指南
运维·人工智能·嵌入式硬件·物联网
Sakura_j_h_16 小时前
STM32F103 定时器的三种用法:PWM 输出、输入捕获与编码器接口
stm32·嵌入式·输入捕获·定时器·pwm·编码器·1024程序员节
Lxx_Zw17 小时前
机器周期与共地:时钟基准和电压参考基准
stm32·单片机·嵌入式硬件
我叫洋洋18 小时前
用 Qoder(AI 编程助手)把 Cadence 16.6 从零配到能画板
人工智能·单片机·嵌入式硬件·电路·1024程序员节