380091044 发表于 2024-4-18 15:44:36

FreeRTOS创建任务时,堆栈大小如何设置合适?

    xTaskCreate(vRtcTask,
                "RTC",
                128,//就是这里,我看默认是128 STC的DEMO里面强制转换成16位,有啥意义?自己创建任务时,如何设置才合适????
                NULL,
                1,
                NULL);

tzz1983 发表于 2024-4-19 08:15:23

本帖最后由 tzz1983 于 2024-4-19 08:19 编辑

任务栈太小的设定, 是根据任务内应用的复杂程度和中断嵌套设置来调整的,
没有固定哪个数值合适这个说法.

对于FreeRTOS_C251, 主要影响因素有, 函数调用深度, 形参+局部变量,
中断嵌套次数, 中断内应用的 "函数调用深度, 形参+局部变量" 也要算进去.

理解这些因素, 可对栈的需求有个大至的估算.
实际操作时, 刚创建任务时, 可分配较大的栈,
运行起来后, 通过OS自身实测的功能来减少至 (实际使用量+安全余量) 即可.

看看这张帖, 里面有一些简单的介绍.
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=6562&extra=page%3D1



bkeuqoaq 发表于 2024-11-8 13:18:28

每个任务的堆栈都要考虑中断,局部变量等,这太占内存了,有些MCU有中断专用指针就好很多
页: [1]
查看完整版本: FreeRTOS创建任务时,堆栈大小如何设置合适?