|
本帖最后由 yukezhe2008 于 2023-1-20 16:43 编辑
之前有遇到死机的情况是因为使用了GPTIM,这次使用2023最新的库例程(低功耗FREERTOS),没有别的计数器,仅仅创建了两个任务,一个跑LCD循环显示,一个把要显示的数字加1,结果又死了,真是要疯了。
- void display(void *pvParameters)
- {
- pvParameters = pvParameters;
- for(;;)
- {
- LcdLoop();
- vTaskDelay(100);
- }
- }
- void counter_loop(void *pvParameters)
- {
- pvParameters = pvParameters;
- for(;;)
- {
- TD.nCount_total++;
- fSHOW=1;
- vTaskDelay(10);
- }
- }
复制代码 /*
先说明一下,stack肯定没溢出,heap管够。
任务里也不会出现FL_DelayMs函数。例程device是fm33lc04X,我用的025n。
简单粗暴去掉低功耗,注释掉sleepConfig函数,运行没问题。
编译器用的MDK v5,没有优化,如果把优化等级改成-O1以上就不会死,具体能活多久没试过。
*/
/*
两个延时函数,如果参数改成100,1,就没问题(至少一晚上都没死),如果是100,10必死,试过的参数情况如下:
一、100,10必死
二、10,100必死
三、100,11存活比前两种情况多几百毫秒后必死
四、100,1必活(至少10H)
五、1,100必活(至少10H)
六、1000,100必死,但是可以看出每次都死在1000的任务循环10次时
七、再创建第三个任务,三个任务参数为100,10,1,必活
八、再创建第三个任务,三个任务参数为10,100,1,必活
*/
请原厂大佬帮忙看看,要被他搞崩溃了!有需要的话我发源码上来!
刚刚试了下,只创建一个任务,也会死,每次都是计数到10002死机。
- void display(void *pvParameters)
- {
- pvParameters = pvParameters;
- for(;;)
- {
- TD.nCount_total++;
- fSHOW=1;
- LcdLoop();
- vTaskDelay(10);
- }
- }
复制代码
|
|