STM32硬件错误(HardFault_Handler)位置判断
1、在硬件中斷函數HardFault_Handler里的while(1)處打調試斷點,程序執行到斷點處時點擊“STOP”停止仿真。
1.2?在Keil菜單欄點擊“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,繼續查看MSP(主堆棧指針)的值,如果R14(LR) = 0xFFFFFFFD,繼續查看PSP(進程棧指針)的值。我的程序R14(LR) = 0xFFFFFFF9,接下來以此為例。
?
1.3?在Keil菜單欄點擊“View”——“Memory Windows”——“Memory1”,在“Address”地址欄中輸入MSP的值:0x20001288,然后在對應的行里找到地址。地址一般以0x08開頭的32位數。本例中,地址為0x08003CB9。
?
??????1.4?在Keil菜單欄點擊“View”——“Disassembly Window”,在“Disassembly”窗口中右擊,在下拉菜單中選擇“Show Disassemblyat Address...”。在彈出框“Show Code atAdress”的地址框中輸入地址0x08003CB9進行搜索,然后就會找到相對應的代碼。這里的代碼就是進入循環中斷之前的情況。仔細查看附近區域的相關代碼來排查錯誤具體原因。
?
?
方法2:
??????2.1在硬件中斷函數HardFault_Handler里的while(1)處打調試斷點,程序執行到斷點處時點擊“STOP”停止仿真。
??????2.2?在Keil菜單欄點擊“View”——“Call Stack Window”彈出“Call Stack + Locals”對話框。然后在對話框中右鍵選擇“Show Caller Code”,就會跳轉到出錯之前的函數處,仔細查看這部分函數被調用或者數組內存使用情況。
?
總結
以上是生活随笔為你收集整理的STM32硬件错误(HardFault_Handler)位置判断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: I2C上拉电阻设计
- 下一篇: stm32 keil下不重启进行仿真寻找