新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > mini2440定時器學習筆記

mini2440定時器學習筆記

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

雖然定時器較多,但工作原理都是相同的,只需要理解一個定時器的工作原理即可。對于某一個定時器,其內部結構原理圖如圖二所示。緩存寄存器TCMPBn和TCNTBn用于緩存定時器n的比較值和初始值;TCON用于控制定時器的開啟與關閉;通過讀取寄存器TCNTOn得到定時器當前計數(shù)值。





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

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



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

TCFG0描述初始值
保留[31:24]0x00
Dead zone length[23:16]此8位決定死區(qū)長度。死區(qū)長度的單位時間等于定時器0的單位時間

0x00
Prescaler 1[15:8]此8位決定定時器2,3,4的預標定器值0x00
Prescaler 0[7:0]此8位決定定時器0,1的預標定器值0x00





②計數(shù)值初始化:這兩個寄存器存放的是設定的計數(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ù),自己編寫。

例1:結合上面講解可知,定時器0的輸入時鐘是經(jīng)過PCLK分頻的得到的,下圖展示了其產(chǎn)生過程。

-------------------------------------分割線---------------------------------------------------

分析:在上題中出現(xiàn)了TCFG1和TCFG0兩個定時器配置寄存器,其中TCFG0配置寄存器控制第一級分頻器prescaler的分頻系數(shù),TCFG1配置寄存器控制多路選擇開關,選擇第二級分頻器divider的分頻系數(shù)。具體如下圖所示:


-----------------------------------------分割線---------------------------------------------------





-----------------------------------------分割線--------------------------------------------------
例2:PCLK為50MHz,請設置適當?shù)姆诸l系數(shù),使定時器0的輸入時鐘為62.5kHz。
答:已知PCLK為50MHz,則50MHz/62.5kHz=800,即需要對PCLK進行800分頻。所以,使第一級分頻器的分頻系數(shù)為100,第2級的分頻系數(shù)為8即可滿足要求。最后,只需要將分頻系數(shù)寫入定時器控制寄存器中相應的位即可,代碼如下:
1 rTCFG0&=~(0xFF);將TCFG0的低8位清零
2 rTCFG0|=99;因為分頻系數(shù)=prescaler+1,即prescaler+1=100,所以,prescaler value=99
3 rTCFG1&=~(0xF);將TCFG1的低4位清零
4 rTCFG1|=0x02;將TCFG1的低4位賦值為0x02,即選擇8分頻輸出


關鍵詞: mini2440定時

評論


技術專區(qū)

關閉