STM32進入HardFault_Handler處理辦法


STM32進入HardFault_Handler處理辦法

HardFault_Handler出現的情況一般有兩種: 
一種是:數組越界 
一種是:堆棧溢出,程序指針指飛

方法一
  • 在中斷HardFault_Handler中的while()處打上斷點,讓程序執行到此處停止。 
    這里寫圖片描述
  • 在Registers里面找到R14(LR)的值,我的這里是:0xFFFFFFF9 
    說明一下: 
    • 0xFFFFFFF9對應的是要看MSP寄存器
    • 0xFFFFFFFD對應的是要看PSP寄存器 
      所以這里需要查找的內存地址是MSP的值:0x20008828 
      這里寫圖片描述
  • 在memory里面查找MSP的值:0x20008828,然后在對應的行里面找到地址,地址一般格式都是:0x0800BA68這樣的。 
    這里寫圖片描述
  • 4.在Disassembly里面右鍵選擇Show Code at Address,把找到的地址輸進去進行搜索,然后就會找到相對應的代碼,這里的代碼就是在進入循環中斷之前的時候的情況,仔細查看這部分函數被調用或者數組內存使用情況。 
    這里寫圖片描述 
    這里寫圖片描述

方法二
    • 在中斷HardFault_Handler中的while()處打上斷點,讓程序執行到此處停止。 
      這里寫圖片描述
    • 在keil中打開Call Stack + Locals,然后在HardFault_Handler上 右鍵選擇:Show Caller Code,就會跳轉到進入循環中斷之前的函數處。仔細查看這部分函數被調用或者數組內存使用情況。 
      這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM