mini2440定時(shí)器學(xué)習(xí)筆記
雖然定時(shí)器較多,但工作原理都是相同的,只需要理解一個(gè)定時(shí)器的工作原理即可。對(duì)于某一個(gè)定時(shí)器,其內(nèi)部結(jié)構(gòu)原理圖如圖二所示。緩存寄存器TCMPBn和TCNTBn用于緩存定時(shí)器n的比較值和初始值;TCON用于控制定時(shí)器的開(kāi)啟與關(guān)閉;通過(guò)讀取寄存器TCNTOn得到定時(shí)器當(dāng)前計(jì)數(shù)值。
其中: prescaler value=0~255 (它的值由TCFG0寄存器設(shè)置,如下圖)
TCFG0 | 位 | 描述 | 初始值 |
保留 | [31:24] | 0x00 | |
Dead zone length | [23:16] | 此8位決定死區(qū)長(zhǎng)度。死區(qū)長(zhǎng)度的單位時(shí)間等于定時(shí)器0的單位時(shí)間 | 0x00 |
Prescaler 1 | [15:8] | 此8位決定定時(shí)器2,3,4的預(yù)標(biāo)定器值 | 0x00 |
Prescaler 0 | [7:0] | 此8位決定定時(shí)器0,1的預(yù)標(biāo)定器值 | 0x00 |
位 | 描述 | 初始值 | |
Timer 0 computer buffer register | [15:0] | Set compare buffer value for Timer0 | 0x00000000 |
位 | 描述 | 初始值 | |
Timer 0 count buffer register | [15:0] | Set count buffer value for Timer 0 | 0x00000000 |
例1:結(jié)合上面講解可知,定時(shí)器0的輸入時(shí)鐘是經(jīng)過(guò)PCLK分頻的得到的,下圖展示了其產(chǎn)生過(guò)程。
-------------------------------------分割線---------------------------------------------------
分析:在上題中出現(xiàn)了TCFG1和TCFG0兩個(gè)定時(shí)器配置寄存器,其中TCFG0配置寄存器控制第一級(jí)分頻器prescaler的分頻系數(shù),TCFG1配置寄存器控制多路選擇開(kāi)關(guān),選擇第二級(jí)分頻器divider的分頻系數(shù)。具體如下圖所示:
-----------------------------------------分割線---------------------------------------------------
例2:PCLK為50MHz,請(qǐng)?jiān)O(shè)置適當(dāng)?shù)姆诸l系數(shù),使定時(shí)器0的輸入時(shí)鐘為62.5kHz。
答:已知PCLK為50MHz,則50MHz/62.5kHz=800,即需要對(duì)PCLK進(jìn)行800分頻。所以,使第一級(jí)分頻器的分頻系數(shù)為100,第2級(jí)的分頻系數(shù)為8即可滿足要求。最后,只需要將分頻系數(shù)寫入定時(shí)器控制寄存器中相應(yīng)的位即可,代碼如下:
1
2
3
4 rTCFG1|=0x02;將TCFG1的低4位賦值為0x02,即選擇8分頻輸出
評(píng)論