天天看點

【STM32】HardFault_Handler問題解決的一種辦法

好久沒寫技術部落格了,這次就把農曆新年前遇到的問題在這裡說一下吧。

在用STM32F4寫程式,調試時候會遇到程式在調試的時候死在某一段代碼上。一直在一段代碼上死循環。

【STM32】HardFault_Handler問題解決的一種辦法

經過百度以後發現了一些造成這個錯誤的原因:

STM32出現HardFault_Handler故障的原因主要有兩個方面:

1、記憶體溢出或者通路越界。這個需要自己寫程式的時候規範代碼,遇到了需要慢慢排查。

2、堆棧溢出。增加堆棧的大小。

經過排查發現應該是堆棧溢出造成的程式錯誤。因為我的程式中對子函數的調用比較多,而且需要的臨時參數和變量很多容易造成堆棧的不夠用的問題。

解決方法:隻要增加堆棧的大小就行了。

【STM32】HardFault_Handler問題解決的一種辦法

打開官方的startup_stm32f40_41xxx.s(也可能是其他的) 找到Stack_Size EQU 設定點

将改堆棧大小設定改大一點就可以了 。但是不能改的很大,改很大也會報錯的。

這篇文章隻是很粗略的解決了這個問題,具體的原因大家想了解的話還是要去看看M4或者M3的核心分析一下。

2016.3.19 晚 于旺園

參考資料:http://blog.csdn.net/zyboy2000/article/details/7668331

繼續閱讀