FreeRTOS可以挂起任务,无法删除任务
代码如下,同样的位置,任务可以被挂起,但是不能被删除。系统会卡死在这里:
看起来,这里的问题是 vPortFree 的问题。
那边注释不是写着:Memory cannot be freed using this scheme. 不能释放内存,所以卡在断言处了。
本质不是删除函数的问题。 另外,你用什么 IDE?
在 VS 上,软件仿真?还是直接下到板子,在线调试? heap类型用的不对,你当前用的是不能free的版本。你在freeRTOS config文件里看一下,或者你去找一下FreeRTOS Heap0~4的区别。 security 发表于 2020-3-26 09:59
另外,你用什么 IDE?
在 VS 上,软件仿真?还是直接下到板子,在线调试?
谢谢,我用的是Atmel单片机,用的是他配套的IDE——Atmel Studio。 lusson 发表于 2020-3-26 10:01
heap类型用的不对,你当前用的是不能free的版本。你在freeRTOS config文件里看一下,或者你去找一下FreeRTO ...
谢谢,我看一下,是用的heap1
黑暗骑士寒心雨 发表于 2020-3-26 10:34
谢谢,我看一下,是用的heap1
Heap1是不支持free的,建议去学习一下他几个heap类型的区别。 lusson 发表于 2020-3-26 10:35
Heap1是不支持free的,建议去学习一下他几个heap类型的区别。
好的,非常感谢! 另外比较好奇你是什么情况下会需要删除task。 lusson 发表于 2020-3-26 10:37
另外比较好奇你是什么情况下会需要删除task。
就是我这个程序会开机判断一下是否有TF卡,如果没有,这个任务就删除了。 lusson 发表于 2020-3-26 10:37
另外比较好奇你是什么情况下会需要删除task。
我还想问一下,这个heap文件需要去哪里下载呢?
Atmel这个FreeRTOS是10.0.0版本,但是工程只有heap1,我需要去github下一个别的heap文件就可以兼容是吧? 黑暗骑士寒心雨 发表于 2020-3-26 10:40
就是我这个程序会开机判断一下是否有TF卡,如果没有,这个任务就删除了。 ...
那还不如没有 TF 卡,就不创建任务。 黑暗骑士寒心雨 发表于 2020-3-26 10:40
就是我这个程序会开机判断一下是否有TF卡,如果没有,这个任务就删除了。 ...
只是判断一下TF卡也要专门的task,真浪费。直接在其他task开始的地方判断就可以了啊。
尽量减少动态创建task以及删除task,OS更稳定。。
你去FreeRTOS官网下载,用法官网上也都有介绍,再不济网上搜一下也有。 security 发表于 2020-3-26 10:43
那还不如没有 TF 卡,就不创建任务。
{:3_45:} 也是。。。 lusson 发表于 2020-3-26 10:44
只是判断一下TF卡也要专门的task,真浪费。直接在其他task开始的地方判断就可以了啊。
尽量减少动态创建t ...
好的,谢谢您!
页:
[1]