STM32 ESP8266连接阿里云监测环境温湿度笔记3:STM32程序编写指南
本篇文章介绍STM32通过UASRT发送AT指令给ESP8266,将采集的温湿度数据上传至阿里云。该程序基于FreeRTOS操作系统,使用SPI协议获取传感器采集的温湿度数据。温湿度传感器采用MTH01,具体接线方式可参考MTH01 SPI 引脚 温湿度传感器 MSP430G2553 单片机 arduino_XD742971636的博客-CSDN博客
一、 创建FreeRTOS程序
1.在STM32CubeMX软件中新建项目,选择所用的STM32型号,首先选择外部时钟,
图1
2.然后将HAL库的Timebase Source从SysTick改为TIM1,
图2
3.接下来按照图3所示配置USART1参数,引脚选择PA9和PA10,
图3
4.然后开启USART1的中断,
图4
5.由于单片机作为从机且只需要读取温湿度传感器数据即可,所以SPI1配置为Receive Only Slave,
图5
6.然后配置PC1引脚为输出模式,控制LED开启或关闭,
图6
7.接下来按照图7所示方式配置FreeRTOS,
图7
8.添加2个任务,
图8
图9
9.然后将USART1的“Uses FreeRTOS functions"功能取消勾选,
图10
10.接下来按照图11所示配置时钟,
图11
11.最后按照图12所示生成项目代码,
图12
二、编写应用程序
1.USART1串口收发程序,
串口数据收发驱动参照正点原子的程序编写。
2.连接阿里云程序
在任务Task_TH中按照图13所示发送7条AT指令给ESP8266,
图13
3.LED状态读取程序
LED引脚高电平灯灭,低电平灯亮,
图14
4.温湿度数据读取程序
图15
5.数据上传程序
由于语句太长,该程序用到了“\”来换行,注意:换行后语句需要顶格写,
图16
6.指令控制程序
在Task_USART任务中单片机首先判断是否为服务器发送的数据,然后判断LightSwitch的状态,为0则关闭LED,为1开启LED。
图17
三、注意事项
1.串口调试助手发送AT指令时需要加“\”的地方在STM32中应该为“\\”。
2.STM32发送AT指令时双引号前也需要添加“\”。
至此完成了该项目的全部内容,如有错误,恳请指正,如有疑问,欢迎讨论。
上篇:STM32+ESP8266+APP连接阿里云监测环境温湿度系列笔记2:IoT Studio制作APP
作者:weixin_42218056