2. 打开Memory窗口,将MSP对应的值0x200006B8输入至Memory窗口的Address出(图中5),进行查找。(如果Memory1中数据是以字节形式显示,我们将其改为long类型即可)
3.由于异常发生时,内核将R0~R3、R12、R14(LR)、PC、XPRS寄存器依次入栈,其中R14(LR)即为发生异常前PC将要执行的下一条指令地址。取Memory1的0x200006B8地址中的第6个地址,即图中6处08000A15。
4.打开Disassembly窗口。在Disassembly 窗口中右键单击,在弹出的对话框中点击show Disassembly at Address… ,出现ShowCode at Address 对话窗口。在开头加上0x后将从图中6处复制的地址粘贴,得到如图中7处所示的数据。
5.点击8处的 goto 即可指到程序进入hardfault 位置(图中10处)。
6.仔细排查图中10处,即可。
方法2:
1.点击菜单栏View->Call Stack Window。
2.鼠标右击A处的HardFault_Handler,在弹出的对话框中点击show caller code,即可指到程序进入hardfault 位置。