任务:这一周,想学习esp8266wifi模块的使用个驱动,学习mqtt,学会阿里云物联网的服务器使用,将自己的智能设备挂载到阿里云上,服务器可以发送指令给我的开发板,开发板完成相应功能。
而这第一步就是:先能把wifi模块驱动起来,我开发板的wifi模块是ESP8266,实验一:开发板发送AT,能够收到回复OK。就这么简单。参考的野火的资料,用的是标准固件库,而我想用HAL库开发,所以需要改一下下。
完成了程序之后,才理解了一些资料。
总结下来就是:我使用的方法就是AT指令,ESP8266烧写好固件,不需要我写wifi固件了,这里不像蓝牙芯片,之前写蓝牙芯片的程序需要考虑透传协议等等之类的,而ESP8266芯片内部集成了很多例如lwip协议等很多,很多事情不需要做,只需要给ESP8266上电,配置好串口,使能一些引脚(RST、CH_PD),最后通过串口给esp8266发送 AT指令就好了。8266会自己去解析AT指令并将结果返回给stm32.
嗯 ,听起来是不很简单,就是这么简单的一个AT指令测试程序我写了好久,卡在了好几个地方。
卡的第一个:是板载的模块上有个EN引脚要接3.3V,我是真的不知道要接,一直驱动不起来,看了下原理图查了查资料才发现这里要给它供电。然后去实验室用电烙铁直接上锡,简单粗暴。
卡的第二个:写程序的时候,没将esp8266的串口引脚和stm32的串口3引脚接正确,程序里配置错uart的tx和rx了,导致串口3驱动不起来,程序运行不出结果。
卡的第三个:串口3的波特率,tmd忘了配置了,哎我真的是!这种问题找了好久好久。。。
一、ESP8266的一些资料
二、程序代码:
bsp_uart.h
#ifndef BSP_USART_H
#define BSP_USART_H
#include "stm32f1xx.h"
#include <stdio.h>
//串口波特率
#define DEBUG_USART_BAUDRATE 115200
#define WIFI_USART_BAUDRATE 115200
/*******************************************************/ /*********************************************************/
//引脚定义 串口1
#define DEBUG_USART USART1
#define DEBUG_USART_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE()
#define DEBUG_USART_RX_GPIO_PORT GPIOA
#define DEBUG_USART_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define DEBUG_USART_RX_PIN GPIO_PIN_10
#define DEBUG_USART_TX_GPIO_PORT GPIOA
#define DEBUG_USART_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define DEBUG_USART_TX_PIN GPIO_PIN_9
#define DEBUG_USART_