新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > mini2440定時(shí)器學(xué)習(xí)筆記

mini2440定時(shí)器學(xué)習(xí)筆記

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
S3C2440有5個(gè)16位定時(shí)器,定時(shí)器0、1、2和3有PWM功能(因此這4個(gè)定時(shí)器也被稱為PWM定時(shí)器),都有一個(gè)輸出引腳,定時(shí)器4是一個(gè)內(nèi)部定時(shí)器,無(wú)外部輸出引腳。
定時(shí)器的時(shí)鐘源是PCLK,然后通過(guò)內(nèi)部的兩級(jí)分頻器分頻得到定時(shí)器工作所需要的頻率。其中,定時(shí)器0、1公用一個(gè)8位的第一級(jí)預(yù)分頻器prescaler 0,定時(shí)器2、3、4公用另一個(gè)8位的第一級(jí)預(yù)分頻器prescaler 1;每個(gè)定時(shí)器都有一個(gè)與之對(duì)應(yīng)的第二級(jí)分頻器clock divider如下圖所示

雖然定時(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ù)值。





定時(shí)器工作原理概述:
①首先,將定時(shí)器的比較值和初始值裝入寄存器TCMPBn和TCMPBn中
②然后,設(shè)置定時(shí)器控制寄存器TCON,啟動(dòng)定時(shí)器。此時(shí),TCMPBn和TCNTBn中的值會(huì)加載到寄存器TCMPn和TCNTn中。
③此時(shí),定時(shí)器會(huì)減1計(jì)數(shù),即TCNTn進(jìn)行減1計(jì)數(shù),當(dāng)TCMPn=TCNTn時(shí),TOUTn引腳輸出相反。

定時(shí)器初始化
① 定時(shí)器時(shí)鐘頻率(比如定時(shí)器時(shí)鐘頻率為50,則1秒鐘計(jì)數(shù)寄存器減去50;為100,則1秒鐘計(jì)數(shù)寄存器減去100);
② 設(shè)置定時(shí)器計(jì)數(shù)值(比如計(jì)數(shù)初值為100,而定時(shí)器時(shí)鐘頻率為50,則兩秒后會(huì)產(chǎn)生中斷,比如引腳輸出相反電平);
③ 設(shè)置中斷處理函數(shù)



①時(shí)鐘頻率初始化:定時(shí)器的時(shí)鐘頻率=PCLK/(prescaler+1)/(divider value)
其中: prescaler value=0~255 (它的值由TCFG0寄存器設(shè)置,如下圖)
divider value=2,4,8,16 (它的值由TCFG1寄存器設(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





②計(jì)數(shù)值初始化:這兩個(gè)寄存器存放的是設(shè)定的計(jì)數(shù)比較值,直接對(duì)其賦值即可.下面以定時(shí)器0為例:
TCMPB0描述初始值
Timer 0 computer buffer register[15:0]Set compare buffer value for Timer00x00000000


TCNTB0描述初始值
Timer 0 count buffer register[15:0]Set count buffer value for Timer 00x00000000

③設(shè)置中斷處理函數(shù),自己編寫。

例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 rTCFG0&=~(0xFF);將TCFG0的低8位清零
2 rTCFG0|=99;因?yàn)榉诸l系數(shù)=prescaler+1,即prescaler+1=100,所以,prescaler value=99
3 rTCFG1&=~(0xF);將TCFG1的低4位清零
4 rTCFG1|=0x02;將TCFG1的低4位賦值為0x02,即選擇8分頻輸出


關(guān)鍵詞: mini2440定時(shí)

評(píng)論


技術(shù)專區(qū)

關(guān)閉