IAR下STM32進入HardFault_Handler


IAR下STM32進入HardFault_Handler  

2015-07-17 08:58:18|  分類: 默認分類|舉報|字號 訂閱

轉自 http://blog.163.com/zhaojun_xf/blog/static/30050580201561785622486/ 
 
        在很多情況下,代碼都會進入HardFault_Handler中斷,例如:堆棧溢出、數組溢出、無效指針的訪問等等。對於這種問題大多很難查找。在網絡上有很多種快速定位的方法,但實際上成效有效。
 
       最近本人也遇到這樣的問題,想通過這個問題找到最快速的定位方法,但成效也不大,但發現有一定的規律,故特地把這些連續抓圖發上,作為記錄,雖然還沒找到其存在的必然性,但可以作為占時的借進。
 
       方法和簡單,在HardFault_Handler中斷打一個斷點,可以發現,進入斷點之前的R4內的只為,進入這個HardFault_Handler之前的函數調用值。
 
IAR下STM32進入HardFault_Handler - 我心永恆 - ARM嵌入式研發
 
 
IAR下STM32進入HardFault_Handler - 我心永恆 - ARM嵌入式研發
 
 
 
總結:
 
     NULL也會導致這個錯誤的,所以在使用NULL時要特別注意,應該對所有指針變量添加NULL判斷,保證指針在NULL時不使用任何指針變量,防止使用NULL的變量進入硬件錯誤。
 
實例:
 
    一個項目中使用到了串口,而這項目中的串口是直接引了兩條線出來。下開發過程中沒有發現任何問題,最好在測試中發現,很多時候單片機不能夠正常運行,都進入了硬件中斷。而且一個奇怪的現象是,板子傾斜一定的角度或者翻轉過來就能夠正常運行。最好跟蹤發現是由於串口干擾導致,串口中斷,在接收數據時,由於還沒有初始化完成就接收到數據,導致指針還沒有初始化,而使用。從而出現了硬件錯誤。


免責聲明!

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



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