freertos官方手冊上有說,移植中出現的問題大多數是由堆棧設置不合理造成的,今天結合自身遇到問題分析一下
1.任務堆棧設置過小,很容易造成硬件溢出,跳轉到void HardFault_Handler(void);
調試方法,可以通過調用函數,UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );來跟蹤剩余堆棧,
不過在CubeMx中的Configuration->FreeRtos->Include parameters中使能uxTaskGetStackHighWaterMark函數;
2.整體設置過小,TOTAL_HEAP_SIZE(Configuration->FreeRtos->Config parameters)
通常來說。TOTAL_HEAP_SIZE設置過小,會在生成函數的時候報錯,但是我遇到的問題是,并沒有報錯,只是程序運行部正常,
在把某個任務的堆棧有256設置成128之后,程序正常。之后將TOTAL_HEAP_SIZE設大,任務設回到256,程序也正常
上一篇:CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定時器
下一篇:【STM32F103】中斷綜述
推薦閱讀
史海拾趣