CubeMX默认为FreeRTOS任务分配的栈空间可能过小。
问题表现:任务异常退出,系统进入HardFault。
解决方法:
增加任务栈大小(xTaskCreate的参数设置)或调整configMINIMAL_STACK_SIZE。
启用FreeRTOS的栈溢出检测功能:
c
复制代码
#define configCHECK_FOR_STACK_OVERFLOW 2
中断优先级未正确配置
CubeMX对中断优先级的配置不符合FreeRTOS要求,可能导致中断与任务之间的资源竞争。
问题表现:程序随机崩溃或中断回调失效。
解决方法:
确保中断优先级高于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。
示例配置:
c
复制代码
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
|