Skip to main content
欢迎来到PAWPAW技术文档网站了解更多信息

FreeRTOS的常见问题

任务栈空间

在FreeRTOS中,为任务分配足够的堆栈空间是很重要的,因为缺少堆栈空间可能导致堆栈溢出。常见的做法是设置足够大的堆栈来满足最坏的情况,并使用FreeRTOS的调试函数来确定是否可以减少堆栈大小,但是这种方法有很大的误差空间并且需要在运行时进行。

XTC工具提供了一种更简单的方法来确定堆栈大小,通过宏RTOS_THREAD_STACK_SIZE() 来确定特定函数的调用所需的精确堆栈大小,使用该宏来创建每个任务将确保每个线程都有足够的堆栈空间来避免堆栈溢出。

xTaskCreate((TaskFunction_t) task_foo,
"foo",
RTOS_THREAD_STACK_SIZE(task_foo),
NULL,
configMAX_PRIORITIES-1,
NULL);