有小伙伴反饋GD32 Timer定時器的周期時間不知如何計算,今天就來安排。
我們分成兩個系列來講解——GD32F30x和GD32F4xx系列。
一、GD32F30x系列
要想計算Timer的周期時間,首先要知道Timer的時鐘頻率,看時鐘頻率當(dāng)然就要看時鐘樹啦,在時鐘樹的右下方就標(biāo)注了Timer的時鐘頻率。

我們把圖放大,可以看到Timer1,2,3,4,5,6,11,12,13的時鐘源來自于CK_APB1,Timer0,7,8,9,10來自于CK_APB2。而CK_APB1和CK_APB2最高的頻率為60M和120M,那這兩類Timer的時鐘頻率是不是就是60M和120M呢?

答案是否定的。我們來看下圖方框中的提示,方框1中寫到,如果APB1的分頻系數(shù)為1的話,這些Timer的頻率就等于CK_APB1,如果APB1的分配系數(shù)不為1,則Timer的頻率等于CK_APB1*2。方框2中的內(nèi)容和方框1中相同,就不再贅述。

那么APB1和APB2的分頻系數(shù)在哪里設(shè)置的呢,答案就是——在系統(tǒng)時鐘配置中,也就是SystemInit函數(shù)中調(diào)用的system_clock_config函數(shù)。通常我們設(shè)置系統(tǒng)時鐘和AHB時鐘為120M,設(shè)置APB1分頻系數(shù)為2,即APB1時鐘為AHB時鐘的二分之一60M;設(shè)置APB2分頻系數(shù)為1,即APB2時鐘等于AHB時鐘120M。

好了,知道以上知識點我們就可以算出Timer的時鐘頻率了。舉個例子,我們設(shè)置AHB時鐘為120M,APB1分頻系數(shù)為2,我們來算下Timer1的頻率。首先,算出CK_APB1=AHB時鐘/2 = 60M,其次,由于APB1分頻系數(shù)不等于1,所以CK_Timer1=CK_APB1*2 = 60M*2 = 120M。

算出Timer的時鐘頻率后,我們看下Timer最基礎(chǔ)的配置代碼:

有兩個和周期時間相關(guān)的參數(shù):
其一為prescaler,即Timer的分頻系數(shù),該分頻系數(shù)將Timer頻率進(jìn)行分頻后給到計數(shù)器時鐘,計算公式為:計數(shù)器時鐘頻率 = CK_TIMER/(prescaler+1),故圖中計數(shù)器時鐘頻率為120M/12000 = 10KHz,即每100us,計時器進(jìn)行一次計數(shù)。
其二為period,即周期值,也叫作重載值,在邊沿計數(shù)模式下,計數(shù)器計重載值個數(shù)所用的時間,稱為一個周期時間,計算公式為:周期時間 = (period+1)/計數(shù)器時鐘頻率;而在中央計數(shù)模式下,計數(shù)器計數(shù)重載值*2個數(shù)所用的時間,稱為一個周期時間,計算公式為:周期時間 = (period+1)*2/計數(shù)器時鐘頻率。故圖中周期時間為160/10K = 16ms。
上面講的是計算過程和原理,下面給出周期時間計算總公式:
1、邊沿計數(shù)模式下的計算公式:
(prescaler+1)*(period+1)/CK_TIMER,其中CK_TIMER根據(jù)APB1和APB2的分頻系數(shù)決定
2、中央計數(shù)模式下的計數(shù)公式:
(prescaler+1)*(period+1)*2/CK_TIMER,其中CK_TIMER根據(jù)APB1和APB2的分頻系數(shù)決定
二、GD32F4xx系列
實際上GD32F4xx系列的周期時間計算公式和GD32F30x的相同,不同的點在于CK_TIMER的計算公式,照例看下GD32F4xx的時鐘樹:

可以看到CK_TIMER可以是APB時鐘乘以1、乘以2或乘以4,那具體是乘以幾呢?這個是根據(jù)時鐘配置寄存器 1(RCU_CFG1) 中的第24位TIMERSEL來決定的:


GD32F4xx用戶手冊中對這一位描述的非常清晰,這里就不再贅述了。
好了,通過本期講解,相信小伙伴們就可以輕松計算出Timer的周期時間啦。
-
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44940瀏覽量
647968 -
嵌入式
+關(guān)注
關(guān)注
5143文章
19569瀏覽量
315662 -
定時器
+關(guān)注
關(guān)注
23文章
3290瀏覽量
117425 -
Timer
+關(guān)注
關(guān)注
1文章
64瀏覽量
13138 -
GD32
+關(guān)注
關(guān)注
7文章
419瀏覽量
25231
發(fā)布評論請先 登錄
GD32開發(fā)實戰(zhàn)指南(基礎(chǔ)篇) 第7章 定時器
GD32開發(fā)實戰(zhàn)指南(基礎(chǔ)篇) 第8章 定時器

f28335定時器頻率為150, 定時器周期值為1000. 時鐘頻率150MHz 。定時時間是1ms ,這是周期寄存器的值應(yīng)該附多少。怎么算
請教關(guān)于C6748 定時器TIMER 計算公式問題
如何去計算Stm32定時器的定時時間
stm32 定時器 時間計算方法 精選資料推薦
通用定時器(Timer)
單片機(jī)定時器周期計算公式
---GD32 MCU---TIMER1更新中斷時間不準(zhǔn)

stm32關(guān)于通用定時器的周期、頻率計算公式

GD32E230開發(fā)筆記-GD32E230定時器控制

評論