调试平台:stm32f407系列
平台:uvision v5.11.1.0
问题:调试程序时,进入硬件中断。
以下两链接大家可以参考,写的都不错。
https://www.cnblogs.com/Ilmen/p/3356147.html
http://www.stmcu.org/module/forum/thread-602474-1-1.html
简单记载一下思路:
根据异常发生时的栈顶地址,找到压入堆栈的内容。找到堆栈中LR中的值,(LR值-3)值,就是发生错误指令的代码地址。即可定位错误代码。
知识点:
寄存器值在堆栈中的顺序:
得到地址(LR-3)后,在反汇编串口中,通过这个地址,定位到异常代码处。
未理解处:为什么是(LR-3)?