问题1:在写WIFI模块测试程序的时候,发AT命令没反应
原因分析:使用串口输出信息,命令发送是没有问题的,命令接收也是没有问题的,使用上位机发送命令就有反应,单片机发送命令WIFI模块就是不理睬。然后发现是wifi模块一上电需要自己初始化一段时间,初始化的时候是不会理睬其他命令的
解决方法:在上电之后先延时一段时间,等WIFI模块自己初始化好,再发命令就好使了。
问题2:在发送完数据之后,需要判断是否发送成功,WIFI模块会返回一个OK信息。调试的时候发现,明明收到反馈字符串里面有需要的返回消息“OK”,但是使用strstr函数找不出来。
原因分析:strstr函数比较时,当源字符串中有‘\0’时,会自动截止,不会再看后面的字符串。因为没有关闭回显功能,所以回显有很多字符串,里面可能会出现‘\0’,导致比较失败
解决方法,关闭回显,只接收应答信息。
问题3:MQTT任务访问按键消息队列时出错误,系统跳转到hard fault(没有空闲任务也会进hard fault)
原因分析:MQTT任务的优先级太高,首先执行,但是按键队列是是在按键任务里面创建的,也就是说再创建队列之前,访问了队列,访问的是野指针。
解决方法:使用指针还是要判空。
问题4:任务创建失败。
原因分析:给FreeRTOS分配的堆太小(5k)导致创建任务失败。
解决方法:把空间加大到10k。
问题5:WIFI连接上,TCP连接不上
防火墙也关了,本机的端口也打开了。
上网搜索,发现是虚拟机的影响,因为之前学linux的时候安装过虚拟机。
解决方法:把虚拟机的两个网络禁用就好了