[stm32]IAR环境 hardfault定位

所有没有被使能的fault,都将进入Hard Fault

一、 出错时的CPU寄存器值

cpu

二、定位

在进入异常服务程序后, LR的值被自动更新为特殊的 EXC_RETURN,这是一个高28位全为1的值
上图中LR = 0xFFFFFFF9,所以使用的是MSP

三、在内存在找到MSP对应的地址

  • 错误异常发生时,上下文(Stack Frame)按照下图顺序被入栈保存. R0最后入栈

四、使用Memory窗口查看MSP处的数据

五、LR对应的汇编语句,正常执行时,函数返回后的执行地址

lr

六、PC对应的汇编语句

pc

实际是运行0x08017070时进入Hard Fault的

Good Good Study! Day Day Up!

原文地址:https://www.cnblogs.com/kdurant/p/4203765.html