常见注意事项
堆内存管理
FreeRTOS需要堆内存分配,确保 configTOTAL_HEAP_SIZE 配置足够。
推荐使用 Heap_4.c 或 Heap_5.c,支持动态分配和释放。
栈溢出保护
启用任务栈溢出检测(configCHECK_FOR_STACK_OVERFLOW),避免任务栈不足导致系统崩溃:
c
复制代码
#define configCHECK_FOR_STACK_OVERFLOW 2
优先级反转问题
使用优先级继承的互斥信号量(xSemaphoreCreateMutex)解决。
定时器任务
使用FreeRTOS软件定时器替代硬件定时器:
c
复制代码
TimerHandle_t timer = xTimerCreate("Timer", pdMS_TO_TICKS(1000), pdTRUE, 0, TimerCallback);
xTimerStart(timer, 0);
调试FreeRTOS
STM32CubeIDE支持FreeRTOS的任务调试(需要启用configUSE_TRACE_FACILITY)。
|