
- FreeRTOS堆栈空间不够,运行一小会之后卡死,调大堆栈
- FreeRTOS任务资源上电的时候共用,比如数组共用,由于优先级问题争抢。比如说你GUI显示的数组还没初始化就要去定时器显示,被其他进程初始化抢占,这个比较玄学,反正就是也是运行一小会后卡死。此时还没出临界区。我的建议是有一些属于库里的,放main最前面初始化,不受抢占影响的再放任务while(1)前面去。
- 动态创建,比如链表,指针使用未释放。内存爆炸。用了就要释放。
- 混用函数调用,这个问题很严重,一开始就要规划好,不然重写也很麻烦。具体表现在在WiFi的任务里面调lv_xxx(),也就是LVGL的控件函数,会运行后触发卡死,原因是任务运行过程中抢占。LVGL相关的内容放LVGL定时器里面去,传递信息尽量通过队列。http://t.csdnimg.cn/Gtuv4
http://t.csdnimg.cn/Gtuv4 - 芯片时钟没有初始化,现象为卡死在LCD初始化刷屏Clear
- RTOS的环境数组小了,不能太大不能太小(lv_conf.h)

单单一个卡死很难排查原因,可以打印串口、软件仿真查看程序停在了哪里,或者看代码变量数据的分布情况猜测
http://t.csdnimg.cn/PfF1D
http://t.csdnimg.cn/PfF1D可以在评论区提出你遇到的问题一起交流