系統(tǒng)時鐘是GD32 MCU的時基,可以理解為系統(tǒng)的心跳,片上所有的外設(shè)以及CPU最原始的時鐘都來自于系統(tǒng)時鐘,因而明確當(dāng)前系統(tǒng)時鐘是多少非常重要,只有明確了系統(tǒng)時鐘,才能夠?qū)崿F(xiàn)準確的定時、準確的采樣間隔以及準確的通信速率等。
以GD32F303為例,其系統(tǒng)時鐘配置在system_gd32f30x.c中,如下圖所示,可以通過打開或者關(guān)閉相關(guān)的宏定義進行時鐘配置,GD32以及提供了一些時鐘配置的函數(shù),可以通過宏定義開關(guān)進行選擇。
確認當(dāng)前系統(tǒng)時鐘有以下兩個方法:
1、軟件方式確認
使用void SystemCoreClockUpdate(void)函數(shù)進行更新當(dāng)前系統(tǒng)時鐘SystemCoreClock,該函數(shù)為根據(jù)當(dāng)前RCU模塊寄存器配置以及外部晶振等相關(guān)宏定義進行計算,將計算的結(jié)果賦值給SystemCoreClock變量,因而調(diào)用該函數(shù)后,SystemCoreClock的值就是當(dāng)前系統(tǒng)時鐘的數(shù)值。
需要注意,如果外部晶振不是8M,則需要調(diào)整HXTAL的宏定義,否則可能會造成SystemCoreClock計算出錯。
2、時鐘輸出確認
另外一種最直接最準確的方式,是將系統(tǒng)時鐘通過CKOUT引腳輸出,然后通過示波器進行查看,如下圖所示,CK_SYS為系統(tǒng)時鐘,將CKOUT0SEL配置為100,就可以將系統(tǒng)時鐘輸出到CK_OUT0引腳上,這樣外部接示波器就可以查看當(dāng)前系統(tǒng)時鐘了。
另外也可以通過定時器或者通信頻率來進行估算,希望大家在系統(tǒng)開發(fā)伊始有確認系統(tǒng)時鐘的好習(xí)慣,避免由于系統(tǒng)時鐘配置出錯導(dǎo)致的隱藏問題。
好的,今天就討論到這里,如有其他疑問,歡迎評論區(qū)討論。
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351195 -
系統(tǒng)時鐘
+關(guān)注
關(guān)注
1文章
30瀏覽量
9311 -
GD32
+關(guān)注
關(guān)注
7文章
403瀏覽量
24351
發(fā)布評論請先 登錄
相關(guān)推薦
評論