为什么没有输入任务?

问题描述 投票:-1回答:1

我正在使用带有Hal stm库的freertos来运行三个任务,第一个是堆栈大小128,第二个是512,而第三个是1100。

这三个任务已成功创建,但在运行调度程序时,只在前两个任务之间切换,即使这三个任务具有相同的优先级。

总项目堆栈大小为8k,堆为9k,而freertos堆为4k

可能是什么问题呢?

stm32 freertos iar
1个回答
1
投票

很难说没有看到代码,但这里有一些调试技巧。

确保将configASSERT()定义为将停止执行的内容(因此您知道它已被调用)。较新版本的FreeRTOS越新越好,因为新版本增加了更多的断言点。

确保定义了malloc failed hook,以便知道是否用完了堆。

尝试在你认为没有运行的任务开始时设置一个断点,并查看它是否曾经输入过 - 可能只运行一次但是将自身置于不再运行的状态(很难说没有看到任务代码)。

同样确保将stack overflow detection设置为2。

© www.soinside.com 2019 - 2024. All rights reserved.