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