提問
為了驗證H750主時鐘頻率和功耗的關(guān)系:
用STM32CUBEMX配置STM32H750VBT6的主時鐘為:100MHz,程序可以正常運行,然后將主時鐘改至120MHz,發(fā)現(xiàn)程序無法運行,再改回100MHz,程序仍然無法運行,程序里面只寫了一個定時器點亮LED燈,想咨詢一下各位大佬,是不是H750的時鐘不能隨便修改?但是我另外一塊板子設(shè)置成120MHz可以正常運行,很奇怪,謝謝
最新回答
芯片內(nèi)部系統(tǒng)時鐘是可以動態(tài)調(diào)整的,你這里應該是用到PLL了。
我們重新配置PLL時要保證PLL是關(guān)閉的,否則如果強行配置,PLL的輸出頻率沒有保障,可能正確、也可能不符合預期。
建議做PLL的修改前,找個別的時鐘源作為系統(tǒng)時鐘過渡下,新的PLL配置生效后,再切換回來。
如果不這樣操作,而是基于相同時鐘源做PLL的配置來修改系統(tǒng)時鐘,并調(diào)用庫函數(shù)SystemClock_Config()寫法的話,可能出現(xiàn)
參數(shù)或狀態(tài)檢查失效而發(fā)生出錯,進而跳進出錯函數(shù)Error_Handler()的while死循環(huán)里而無法運行別的了,這時給人感覺就是程序不運行了。
當然,我在測試過程中嘗試強行將相關(guān)參數(shù)或狀態(tài)檢查代碼屏蔽掉也能過,新的系統(tǒng)時鐘也能生效,但這樣畢竟不規(guī)范。
既然另一塊板子能跑120MHZ的話,那么理論上都應該可以的。
至于第一塊板子具體發(fā)生了什么還真不好猜,這時候就要看調(diào)試工具大顯身手了。
通過調(diào)試,看看定時器的狀況,代碼狀況是否發(fā)生了異常。