我們知道,MCU的系統(tǒng)時(shí)鐘主頻就相當(dāng)于人的心跳或脈搏,為所有的工作單元提供時(shí)間基數(shù),所以一般在程序最開始的地方都需要進(jìn)行主頻配置。
GD32固件庫中提供了多種宏定義,可以很方便的將系統(tǒng)時(shí)鐘配置為想要的頻率。
GD32固件庫中所用的外部晶振配置一般為8M或25M,如果想要使用其他頻率的晶振,可以參考FAQ《更改晶振后如何修改配置》。
有的小伙伴在做好PCB后,將程序下載進(jìn)去發(fā)現(xiàn)運(yùn)行異常,想要仿真查下原因時(shí),發(fā)現(xiàn)下載不了程序了,這時(shí)候就要注意,是不是板子上的晶振和程序中配置的不匹配?比如程序中使用的晶振大小為8M,但板子上的是12M的晶振,結(jié)果你以為配置的是120M的主頻,實(shí)際變成了180M了,這超頻可太多了,當(dāng)然就無法再下載程序啦。
那如何解決這個(gè)問題呢?有個(gè)方法就是讓MCU進(jìn)入ISP模式,小伙伴們可以參考FAQ《GD32 MCU進(jìn)入低功耗模式導(dǎo)致無法再進(jìn)行程序下載怎么辦?》中的“方法一”,和超頻無法下載類似。
我們今天講述另一種方法,那就是啟動(dòng)MCU的時(shí)候,用鑷子把外部晶振的OSC_IN和OSC_OUT腳短接起來,然后把程序擦除即可。沒錯(cuò),就是這么簡單粗暴。
原理其實(shí)也很簡單,使用GD32 固件庫時(shí),一般在進(jìn)入main函數(shù)之前都會(huì)進(jìn)行系統(tǒng)時(shí)鐘配置,配置函數(shù)中在開啟外部晶振后會(huì)有等待晶振穩(wěn)定的過程,如果在一定時(shí)間內(nèi)無法穩(wěn)定,則會(huì)進(jìn)入while(1)循環(huán)(小伙伴們可以自行增加超時(shí)退出的操作哦),在這個(gè)過程中,MCU實(shí)際是使用內(nèi)部高速晶振在跑的,沒超頻,當(dāng)然就可以擦除程序啦,用鑷子短接晶振,就是為了讓晶振狀態(tài)無法穩(wěn)定,是不是很簡單呢?
利用類似原理,其實(shí)還有其他操作也可以解決,小伙伴們有想到嗎?沒錯(cuò),就是把晶振從板子上拆下來,等程序被擦除后,再焊接回去。
其實(shí)這個(gè)方法也適用于進(jìn)入低功耗后無法下載的問題,當(dāng)然前提是用的外部晶振。
好了,今天的內(nèi)容就這些,如果還沒有學(xué)廢,那就評論區(qū)聊聊吧~記得點(diǎn)贊收藏加關(guān)注
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635355 -
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351213 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305243 -
硬件開發(fā)
+關(guān)注
關(guān)注
3文章
158瀏覽量
24178
發(fā)布評論請先 登錄
相關(guān)推薦
評論