1. 程序卡死/跑飞
栈溢出:
在启动文件(如startup_stm32fxxx.s)中增大Stack_Size。
使用__get_MSP()检查栈顶是否被改写。
中断冲突:
确认中断优先级分组(NVIC_SetPriorityGrouping())。
检查未处理的中断标志(清除Pending位)。
HardFault定位:
在HardFault_Handler中读取SCB->CFSR(故障状态寄存器)、SCB->HFSR、SCB->MMFAR(内存管理地址)。
使用ARM Cortex-M的故障诊断库(如CmBacktrace)自动定位崩溃代码行。
|