STM32進(jìn)入HardFault_Handler處理辦法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
STM32進(jìn)入HardFault_Handler處理辦法
方法一HardFault_Handler出現(xiàn)的情況一般有兩種:
一種是:數(shù)組越界
一種是:堆棧溢出,程序指針指飛
在中斷HardFault_Handler中的while()處打上斷點(diǎn),讓程序執(zhí)行到此處停止。
在Registers里面找到R14(LR)的值,我的這里是:0xFFFFFFF9
說明一下:
0xFFFFFFF9對應(yīng)的是要看MSP寄存器
0xFFFFFFFD對應(yīng)的是要看PSP寄存器
所以這里需要查找的內(nèi)存地址是MSP的值:0x20008828
在memory里面查找MSP的值:0x20008828,然后在對應(yīng)的行里面找到地址,地址一般格式都是:0x0800BA68這樣的。
4.在Disassembly里面右鍵選擇Show Code at Address,把找到的地址輸進(jìn)去進(jìn)行搜索,然后就會找到相對應(yīng)的代碼,這里的代碼就是在進(jìn)入循環(huán)中斷之前的時(shí)候的情況,仔細(xì)查看這部分函數(shù)被調(diào)用或者數(shù)組內(nèi)存使用情況。
方法二
在中斷HardFault_Handler中的while()處打上斷點(diǎn),讓程序執(zhí)行到此處停止。
在keil中打開Call Stack + Locals,然后在HardFault_Handler上 右鍵選擇:Show Caller Code,就會跳轉(zhuǎn)到進(jìn)入循環(huán)中斷之前的函數(shù)處。仔細(xì)查看這部分函數(shù)被調(diào)用或者數(shù)組內(nèi)存使用情況。