標(biāo)題:
一個(gè)因VCAP腳導(dǎo)致的hardFault異常的話題
[打印本頁]
作者:
taoran
時(shí)間:
2016-6-17 01:42
標(biāo)題:
一個(gè)因VCAP腳導(dǎo)致的hardFault異常的話題
某日,有位
STM32
用戶咨詢?nèi)缦聠栴}:
“在使用stm32f411CE芯片,編譯環(huán)境是keil mdk 5.15.仿真器使用Jlink。利用st官網(wǎng)標(biāo)準(zhǔn)庫文件建立工程。主函數(shù)中只有while(1){i++;if(i>100) i=0;}在仿真時(shí)出現(xiàn)keil中的復(fù)位按鈕沒有復(fù)位的作用,使用停止按鈕發(fā)現(xiàn)程序進(jìn)入HardFault_Handler(void)中的死循環(huán),請(qǐng)問時(shí)什么原因造成的?”
據(jù)該用戶透露,之前他用
STM32F407
做過項(xiàng)目,對(duì)
STM32
開發(fā)應(yīng)該說比較熟悉了。不過上面的問題讓他也折騰好幾天沒有進(jìn)展,自信心頗受打擊。
因?yàn)橛脩繇?xiàng)目工程里幾乎沒有自己的代碼,就是建立了個(gè)基本工程框架而已。懷疑其建立項(xiàng)目過程中出了問題,建議使用標(biāo)準(zhǔn)庫的模板工程測(cè)試。結(jié)果發(fā)現(xiàn)問題依舊。
后來客戶改用
STM32cubeMx
做基本的工程配置,自主調(diào)整系統(tǒng)工作時(shí)鐘。意外發(fā)現(xiàn)當(dāng)系統(tǒng)時(shí)鐘調(diào)在
36M
或更低時(shí)
hardfault
異常消失,當(dāng)系統(tǒng)時(shí)鐘調(diào)高時(shí)問題重現(xiàn)。
用戶的工程代碼依舊簡(jiǎn)單得不能再簡(jiǎn)單,F(xiàn)在問題似乎跟系統(tǒng)時(shí)鐘高低有關(guān),但用戶目前配置的時(shí)鐘都是正常范圍,應(yīng)該正常工作才對(duì)。
如果不是他用
STM32cubeMX
做配置,可能還會(huì)懷疑它的啟動(dòng)文件張冠李戴【一般出現(xiàn)在芯片簡(jiǎn)移植時(shí)】、時(shí)鐘配置錯(cuò)誤、或者是跟指令預(yù)取時(shí)間參數(shù)配置相關(guān)的代碼配置錯(cuò)誤,F(xiàn)在用戶是用
STM32CUBEMX
配置,一般來講這些問題都不會(huì)存在。因?yàn)?/font>
CUBE
工具都幫你處理好了。
這樣看來問題很可能出在硬件線路方面。建議客戶對(duì)其硬件檢查,尤其電源部分和
VCAP
腳。從客戶反饋的問題現(xiàn)象來看,跟
VCAP
腳關(guān)系可能比較大。
后來用戶再次從硬件線路做確認(rèn)檢查,果真發(fā)現(xiàn)
VCAP
腳上電容有虛焊現(xiàn)象。重新處理后一切正常。
STM32家族中部分
系列的芯片有
1
到
2
個(gè)
VCAP
腳,它們往往需要接上合適的電容。
ST MCU
的手冊(cè)上都給出相關(guān)品質(zhì)參數(shù)。
VCAP
腳的電容對(duì)維持芯片內(nèi)部供電的穩(wěn)定非常關(guān)鍵。
如果該腳的電容焊接得不好或參數(shù)相差太遠(yuǎn)、品質(zhì)太差都會(huì)引起問題?吹竭@里,也就不難理解上面提到的系統(tǒng)工作時(shí)鐘低時(shí)能正常工作,系統(tǒng)頻率高時(shí)MCU就扛不住了,出現(xiàn)
HARDFAULT
異常。
導(dǎo)致
HARDFAULT
異常的原因很多,還有比如時(shí)鐘超頻、數(shù)組越界、堆棧溢出、程序跑飛、非法指令等。有時(shí)原因并不太好找和跟蹤,平時(shí)多些方向性的原因積累對(duì)你的項(xiàng)目開發(fā)相信不無裨益。
相關(guān)話題:
STM32
系列
MCU
芯片
開關(guān)
總
中斷
的話題
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1