硬件:esp8266 01s;
USB转TTL模块;
stm32f103c8t6;
软件:STM32CubeMX(可以到官网下载)、Keil5(可以到哔哩哔哩下载)、串口助手(文章1有下载链接)。
/*----------------------------------------------------------*/
/*函数名:连接WIFI网络函数 */
/*参 数:最长等待时间time,AT指令cmd,esp8266响应response */
/*返回值:0成功,1失败 */
/*----------------------------------------------------------*/
char esp8266_AT(uint8_t time,char *cmd,char *response)
{
memset(Usart3type.DMARecBuffer,0,Usart3_DMARecBuffer_Size);//清空DMA接受缓存区
Usart3type.DMARecLen = 0;
Usart3_printf("%s\r\n",cmd);
HAL_Delay(2000);
while(time--)
{
HAL_Delay(10);
if(strstr((const char*)Usart3type.RecBuffer,response))
break;
}
if(Usart3type.RecFlag)
{
printf("%d\r\n",Usart3type.RecLen);
printf("%s\r\n",Usart3type.RecBuffer);
memset(Usart3type.RecBuffer,0,Usart3_RecBuffer_Size);
Usart3type.RecLen = 0;
Usart3type.RecFlag = 0;
}
if(time>1)
{
printf("成功\r\n");
return 0;//成功
}
else
return 1;//失败
}
在usart.h添加
#include "stdio.h"
#include "stdarg.h"
在usart.c添加
/*-------------------------------------------------*/
/*函数名:串口3 printf函数 */
/*参 数:char* fmt,... 格式化输出字符串和参数 */
/*返回值:无 */
/*-------------------------------------------------*/
void Usart3_printf(char *format,...)
{
char TxStringBuff[100];
uint8_t length=0;
va_list arg;
va_start(arg,format);
vsprintf(TxStringBuff,format,arg);
va_end(arg);
length=strlen((const char*)TxStringBuff);
HAL_UART_Transmit(&huart3, (uint8_t *)TxStringBuff, length, HAL_MAX_DELAY);
}
printf("1.准备配置WiFi模式\r\n");//1
if(esp8266_AT(100,"AT+CWMODE=3\r\n","OK"))
{
printf("配置WIFI模式失败!\r\n");
esp8266_Init_flag = 1;
}