freertos进入hardfault
现象: task里添加了如下代码,就进入hardfault了。

分析1: 栈回溯法寻找异常语句,发现异常时pxCurrentTCB->uxPriority的值是0x08000F1B,栈溢出。


分析2: 检查pxCurrentTCB发现所有的值都不对,pcTaskName都应该是有名字的,所以pxCurrentTCB指到的错误的内存地址。

原因:
uxTaskGetNumberOfTasks()返回当前正在管理的任务数。这包括所有准备就绪、阻塞和挂起的任务。已删除但尚未被空闲任务释放的任务也将包含在计数中。- 但
init_task任务创建完后就会删除自身,并且再还没有释放的时候,就调用了uxTaskGetNumberOfTasks(),参数是uxTaskGetNumberOfTasks(),导致指针溢出。
![image]()
改正:
![image]()
该文由博客园堇花还没开吗所撰写,原文链接:https://www.cnblogs.com/huanghongxingjim/p/18827220,未经同意,不允许转载!



浙公网安备 33010602011771号