我們知道,MCU的系統(tǒng)時鐘主頻就相當(dāng)于人的心跳或脈搏,為所有的工作單元提供時間基數(shù),所以一般在程序最開始的地方都需要進(jìn)行主頻配置。
GD32固件庫中提供了多種宏定義,可以很方便的將系統(tǒng)時鐘配置為想要的頻率。

GD32固件庫中所用的外部晶振配置一般為8M或25M,如果想要使用其他頻率的晶振,可以參考FAQ《更改晶振后如何修改配置》。
有的小伙伴在做好PCB后,將程序下載進(jìn)去發(fā)現(xiàn)運行異常,想要仿真查下原因時,發(fā)現(xiàn)下載不了程序了,這時候就要注意,是不是板子上的晶振和程序中配置的不匹配?比如程序中使用的晶振大小為8M,但板子上的是12M的晶振,結(jié)果你以為配置的是120M的主頻,實際變成了180M了,這超頻可太多了,當(dāng)然就無法再下載程序啦。
那如何解決這個問題呢?有個方法就是讓MCU進(jìn)入ISP模式,小伙伴們可以參考FAQ《GD32 MCU進(jìn)入低功耗模式導(dǎo)致無法再進(jìn)行程序下載怎么辦?》中的“方法一”,和超頻無法下載類似。
我們今天講述另一種方法,那就是啟動MCU的時候,用鑷子把外部晶振的OSC_IN和OSC_OUT腳短接起來,然后把程序擦除即可。沒錯,就是這么簡單粗暴。

原理其實也很簡單,使用GD32 固件庫時,一般在進(jìn)入main函數(shù)之前都會進(jìn)行系統(tǒng)時鐘配置,配置函數(shù)中在開啟外部晶振后會有等待晶振穩(wěn)定的過程,如果在一定時間內(nèi)無法穩(wěn)定,則會進(jìn)入while(1)循環(huán)(小伙伴們可以自行增加超時退出的操作哦),在這個過程中,MCU實際是使用內(nèi)部高速晶振在跑的,沒超頻,當(dāng)然就可以擦除程序啦,用鑷子短接晶振,就是為了讓晶振狀態(tài)無法穩(wěn)定,是不是很簡單呢?

利用類似原理,其實還有其他操作也可以解決,小伙伴們有想到嗎?沒錯,就是把晶振從板子上拆下來,等程序被擦除后,再焊接回去。
其實這個方法也適用于進(jìn)入低功耗后無法下載的問題,當(dāng)然前提是用的外部晶振。
好了,今天的內(nèi)容就這些,如果還沒有學(xué)廢,那就評論區(qū)聊聊吧~記得點贊收藏加關(guān)注
--BY JUWOTEK.