keil 定位hardfault

首先,在程序中我设置了一个hardfault:

keil 定位hardfault_第1张图片

然后运行程序程序复位,通过log打印可以看到通用寄存器的值:

keil 定位hardfault_第2张图片

我们主要看lr的值,然后debug调试程序,打开keil的Disassembly窗口,在View菜单中,

拖动鼠标找到0x800d7b1这个位置(大概位置就可以)出现hardfault的地方就在lr地址后面的地址出的代码:

keil 定位hardfault_第3张图片

我们双击D7B2这个地址,代码跳转到这个函数中,仔细检查这个函数没有问题,推测可能是调用此函数的地方出现了问题:

你可能感兴趣的:(STM32,keil,debug)