新聞中心

        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í)器的開啟與關(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配置寄存器控制多路選擇開關(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)閉
        主站蜘蛛池模板: 克拉玛依市| 临沧市| 闵行区| 金沙县| 大悟县| 贵德县| 开平市| 湾仔区| 安义县| 武冈市| 永丰县| 神农架林区| 慈溪市| 磴口县| 巴彦县| 读书| 澎湖县| 横山县| 枣阳市| 萝北县| 尼木县| 遂宁市| 台安县| 奉节县| 乌拉特前旗| 大丰市| 靖西县| 克东县| 内黄县| 岫岩| 南川市| 星座| 武城县| 绵阳市| 碌曲县| 乐都县| 永宁县| 台湾省| 长白| 武功县| 绵阳市|