1,程序结构
2,usart3程序
2.1,if(USART3_RX_STA<USART3_REC_LEN)//还可以接收数据,判断目前接收的数据数量是否大于临时缓存空间的最大值,
2.2如果大于
USART3_RX_STA|=0x8000;//强制标记接收完成
则强制完成接收,后面的数据忽略
2.3如果小于
先清空定时器的计数值,然后判断串口3的接收标志位位0时,打开定时器开始计时.
2.4然后将最新接收的数据存入数组中.
2.5 串口接收引入定时器是个很巧妙的设计,发现串口接收中断,然后定时一段时间,定时器时间到了,溢出中断直接把串口的接收标志置为完成.
3,定时器配置
4, 定时器tim程序
然后主程序里把串口标志置0,
5,MQTT发送函数transport文件
把MQTT的发送与接收与串口3的发送与接收绑定在一起,进行解码处理.
6,esp8266文件是连接路由器和TCP的,用于联网
发送命令后esp8266模块会回复数据,模块通讯都是类似的,就是类容不一样
7,主函数
7.1先定义需要的变量
7.2连接云平台
7.3主循环里保持设备在线的心跳包,10秒左右发一次,20次不成功就重新配网
7.4 主循环里接收消息的处理