FreeRTOS创建任务时,堆栈大小如何设置合适?
xTaskCreate(vRtcTask,"RTC",
128,//就是这里,我看默认是128 STC的DEMO里面强制转换成16位,有啥意义?自己创建任务时,如何设置才合适????
NULL,
1,
NULL);
本帖最后由 tzz1983 于 2024-4-19 08:19 编辑
任务栈太小的设定, 是根据任务内应用的复杂程度和中断嵌套设置来调整的,
没有固定哪个数值合适这个说法.
对于FreeRTOS_C251, 主要影响因素有, 函数调用深度, 形参+局部变量,
中断嵌套次数, 中断内应用的 "函数调用深度, 形参+局部变量" 也要算进去.
理解这些因素, 可对栈的需求有个大至的估算.
实际操作时, 刚创建任务时, 可分配较大的栈,
运行起来后, 通过OS自身实测的功能来减少至 (实际使用量+安全余量) 即可.
看看这张帖, 里面有一些简单的介绍.
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=6562&extra=page%3D1
每个任务的堆栈都要考虑中断,局部变量等,这太占内存了,有些MCU有中断专用指针就好很多
页:
[1]