FreeRTOS 常见问题与排查
常见问题与排查
| 问题 | 排查思路 |
|---|---|
| 系统偶发死机、进了 HardFault | 先看是否栈溢出(把检测开到 2 级),再看是否在中断里调用了非 FromISR API,或临界区太长 |
| 某个任务一直不运行 | 看优先级是否被更高优先级任务长期占住;用运行时统计确认 CPU 占用分布 |
| 延时不准 | 检查 configTICK_RATE_HZ 与 pdMS_TO_TICKS 的换算;tickless 下确认唤醒补偿是否正确 |
| 动态创建对象失败 | 看 configTOTAL_HEAP_SIZE 与所选堆方案;接上 vApplicationMallocFailedHook |
| 中断里调 API 触发断言 | 核对 NVIC 优先级分组与 configMAX_SYSCALL_INTERRUPT_PRIORITY 的数值关系 |
| 不知道任务栈给多少合适 | 先用一个偏大的值跑起来,看 uxTaskGetStackHighWaterMark 的余量,再逐步收窄 |
最后一条经验:开发阶段把 configASSERT、栈溢出检测、运行时统计都打开,它们会替你抓住绝大部分「偶发」问题;到量产再按资源情况逐项关掉。

