0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹arm9時鐘與定時器

GReq_mcu168 ? 2018-02-07 08:38 ? 次閱讀

前言
這篇主要介紹arm9時鐘定時器方面,根據(jù)s3c2440手冊第七章的內(nèi)容來看,涉及到不少的知識點,power管理、時鐘、usb時鐘、camera等,接下來只介紹時鐘方面,其余部分以后再說

簡介
系統(tǒng)時鐘是整個電路的心臟,了解系統(tǒng)時鐘結(jié)構(gòu)對于后面學(xué)習定時器,UART等使用具有非常重要的作用,總體來說,與s3c2440處理器有關(guān)的時鐘主要有4種: FIN, FCLK, HCLK和PCLK 1.FIN:外部輸入晶振頻率 2.FCLK: 主要用于CPU核 3.HCLK:主要用于與AHB總線互連的設(shè)備(如存儲控制器, LCD控制器, 中斷控制器及DMA等)上 4.PCLK:主要用于與APB總線互連的低速設(shè)備(如定時器, UART, ADB等)上

圖解時鐘
s3c2440處理器系統(tǒng)時鐘分為兩個部分, 外部有時鐘輸入引腳,內(nèi)部用2個鎖相環(huán)將外部輸入時鐘倍頻到處理器工作說需要的時鐘, 外部時鐘頻率太高容易受到外部的干擾,因此一般外部時鐘頻率比較低, 如下圖:

介紹arm9時鐘與定時器

介紹arm9時鐘與定時器

介紹arm9時鐘與定時器

■CLKDIVN:用于控制FCLK, HCLK和PCLK之間的比例關(guān)系

介紹arm9時鐘與定時器

介紹arm9時鐘與定時器

// LOCKTIME = 0x00ffffff; // 使用默認值即可,在下面會討論CLKDIVN = 0x03; // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1/* 如果HDIVN非0,CPU的總線模式應(yīng)該從“fast bus mode”變?yōu)椤癮synchronous bus mode” */__asm__("mrc p15, 0, r1, c1, c0, 0\n" /* 讀出控制寄存器 */ "orr r1, r1, #0xc0000000\n" /* 設(shè)置為“asynchronous bus mode” */"mcr p15, 0, r1, c1, c0, 0\n" /* 寫入控制寄存器 */); MPLLCON = ((0x5c<<12)|(0x04<<4)|(0x01))

上面代碼注釋中,關(guān)于LOCKTIME的賦值,這個又是怎么回事兒呢,還是根據(jù)手冊

介紹arm9時鐘與定時器

1

2

3

4

5

6

7

8

9

10

定時器 由上面可知,定時器是ABP總線設(shè)備,在PCLK的時鐘頻率下工作,s3c2440有5個16位定時器,定時器0,1,2,3有脈沖調(diào)制(PWM)功能, 因此這4個定時器也被稱為PWM定時器,定時器4是一個內(nèi)部定時器,無外部輸出引腳,定時器的時鐘源雖然是PCLK,但是還得通過內(nèi)部的兩個分頻器分頻后, 才能得到想要的工作頻率,然后輸出作為定時器的工作的時鐘,定時器0,1公用一個分頻器,其他3個定時器公用另一個分頻器,如下圖

介紹arm9時鐘與定時器

定時器的工作原理描述,以定時器0為例: 1.首先,將TCMPB0,TCNTB0附初值 2.然后,設(shè)置定時控制器TCON,將TCON的第1位置1(手動更新位), 這樣TCMPB0,TCNTB0賦值給TCMPB0,TCNTB0 3.啟動定時器–>設(shè)置TCON第3位為1(當TCNT0的值減到0時,TCMPB0的值會自動加載到寄存器TCMP0和TCNT0中), 第0位為1(開啟定時器) 4.此時,定時器會減1計數(shù), 即TCNT0進行減1計數(shù), 當TCMP0與TCNT0相等時, TOUT0翻轉(zhuǎn) 之后介紹一下相關(guān)的寄存器在手冊中的定義: ■TCON:對于定時器0來講:

介紹arm9時鐘與定時器

定時器的分頻 前面提到了定時器0的使用方法,但是沒有提到其最終的工作所需要頻率(1s中能記多少個數(shù))

介紹arm9時鐘與定時器

介紹arm9時鐘與定時器

介紹arm9時鐘與定時器

void timer0_init(void) { TCFG0 = 99; // 預(yù)分頻器0 = 99 TCFG1 = 0x02; // 選擇8分頻 TCNTB0 = 62500; // 1秒鐘觸發(fā)一次中斷 TCMPB0 = 0; TCON |= (1<<1); ? // 手動更新(將TCNTB0,TCMPB0更新入TCNT0, TCMP0) ? ?TCON ? = 0x09; ? ? ?// 自動加載,清“手動更新”位,啟動定時器0 ?}

PWM功能 對于定時器0來講,上面的例子中TCNT0 1s內(nèi)減到0,則TOUT0反轉(zhuǎn)(電平變化), 但是定時器0還有個特性,就是如果TCNT0減到與比較值TCMP0相等,則TOUT0也發(fā)生反轉(zhuǎn),也就是說上面的例子將 TCMPB0 改成31250后,則TCNT0從62500減到31250(與TCMP0相等)TOUT0發(fā)生一次反轉(zhuǎn)(用時0.5s),TCNT0減到0又發(fā)生反轉(zhuǎn)(用時0.5s),這樣,1s內(nèi)發(fā)生兩次反轉(zhuǎn),如此循環(huán),輸出引腳0.5s反轉(zhuǎn)一次,即占空比50%(波形0.5秒為高電平,0.5秒為低電平這樣循環(huán)的波形)

void timer0_init(void) { TCFG0 = 99; // 預(yù)分頻器0 = 99 TCFG1 = 0x02; // 選擇8分頻 TCNTB0 = 62500; // 1秒鐘觸發(fā)一次中斷 TCMPB0 = 31250; TCON |= (1<<1); ? // 手動更新(將TCNTB0,TCMPB0更新入TCNT0, TCMP0) ? ?TCON ? = 0x09; ? ? ?// 自動加載,清“手動更新”位,啟動定時器0 ?}

注意,如果將上面代碼TCMPB0=31250,改為別的值,比如TCNTB0 /4,則輸出的波形一定發(fā)生變化(比如0.25秒為高電平,0.75s為低電平這樣循環(huán)的波形),即占空比也發(fā)生變化,這就是所謂的PWM功能

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • arm9
    +關(guān)注

    關(guān)注

    2

    文章

    290

    瀏覽量

    54970
  • 時鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1713

    瀏覽量

    131274
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3231

    瀏覽量

    114326

原文標題:深入時鐘與定時器

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    stm32基本定時器介紹

    信號?;?b class='flag-5'>定時器框圖如下:二、時基單元介紹STM32的所有定時器都具備時基單元,時基單元的功能就是簡單的計數(shù),即計數(shù)時鐘源TMxCLK的脈沖個數(shù),這個
    發(fā)表于 08-18 06:15

    ARM9體系結(jié)構(gòu)的相關(guān)資料分享

    7.Thumb指令集概況8.ARM指令集與Thumb指令集比較ARM9體系結(jié)構(gòu)1.ARM命名ARM系列微處理擴展命名符號的含義2.
    發(fā)表于 12-20 07:47

    uc/OS-Ⅱ在ARM9上的移植介紹

    uc/OS-Ⅱ在ARM9上的移植介紹
    發(fā)表于 03-28 09:51 ?30次下載

    構(gòu)造廉價的Arm9 開發(fā)平臺

    構(gòu)造廉價的Arm9 開發(fā)平臺 基于Arm9內(nèi)核的單片機,由于其低廉的價格與優(yōu)越的性能,已經(jīng)被廣泛的應(yīng)用于各種消費類電子產(chǎn)品中。掌握Arm9單片機的開發(fā)技能已經(jīng)
    發(fā)表于 02-10 11:20 ?72次下載

    時鐘555定時器電路

    時鐘555定時器電路
    發(fā)表于 01-17 14:08 ?2652次閱讀
    <b class='flag-5'>時鐘</b>555<b class='flag-5'>定時器</b>電路

    ARM9ARM7的比較及優(yōu)化

    理解ARM9ARM7 的差別,以及如何針對ARM9 進行系統(tǒng)優(yōu)化,成為了一個令人關(guān)注的話題。本文通過對ARM9 處理的特點
    發(fā)表于 04-13 14:58 ?55次下載
    <b class='flag-5'>ARM9</b>與<b class='flag-5'>ARM</b>7的比較及優(yōu)化

    arm9arm11有何區(qū)別?

    主要介紹arm9arm11是什么,有什么優(yōu)勢和特點。來了解一下arm9arm11有何區(qū)別?
    發(fā)表于 11-10 16:44 ?3734次閱讀

    學(xué)ARM9入門需要多久_學(xué)ARM9要看的書籍

    學(xué)習開發(fā)板關(guān)鍵是有一定基礎(chǔ),視頻教程也是針對這樣的人,初學(xué)者要是沒有人指導(dǎo),只看視頻教程就會,很難的。本文首先介紹學(xué)習arm9需要掌握的知識,其次闡述了學(xué)ARM9要看的書籍,最后解答了學(xué)ARM
    的頭像 發(fā)表于 05-16 15:10 ?9969次閱讀

    ARM9入門學(xué)習心得分享

    本文首先介紹ARM9的優(yōu)勢及特點,其次闡述了ARM9要學(xué)的內(nèi)容匯總以及書籍推薦,最后介紹ARM9入門學(xué)習心得。
    的頭像 發(fā)表于 05-18 17:15 ?7225次閱讀

    初學(xué)者是選ARM7還是ARM9?uCOS還是Linux?

    本文首先介紹ARM7、ARM9和uCOS及Linux這四者的概念,其次闡述了ARM7與ARM9的區(qū)別,最后
    發(fā)表于 05-25 11:16 ?7628次閱讀

    Atmel最新的基于ARM9架構(gòu)的微處理介紹

    在2011 ARM Techcon上,Atmel的應(yīng)用經(jīng)理介紹其最新的基于ARM9架構(gòu)的微處理。
    的頭像 發(fā)表于 06-26 11:30 ?5825次閱讀

    單片機MSP430入門理論⑧--定時器模塊-定時器A③

    單片機MSP430入門理論⑧--定時器模塊-定時器A③上期大概給大家匯總介紹了,定時器模塊中定時器A的TACTL控制寄存
    發(fā)表于 11-19 18:51 ?8次下載
    單片機MSP430入門理論⑧--<b class='flag-5'>定時器</b>模塊-<b class='flag-5'>定時器</b>A③

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數(shù)時鐘計數(shù)
    發(fā)表于 11-23 18:21 ?31次下載
    STM32<b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    五、【中級篇】時鐘樹、定時器、中斷

    RTC 24bit down count在ARM-CORTEX-M3核心中提供了定時器的資源:系統(tǒng)定時器(system timer | systick)無論是STM32提供的定時器
    發(fā)表于 01-14 15:44 ?6次下載
    五、【中級篇】<b class='flag-5'>時鐘</b>樹、<b class='flag-5'>定時器</b>、中斷

    ARM9處理從哪些方面保證了FIQ異常響應(yīng)的快速性?

    如何保證FIQ異常響應(yīng)的快速性:管道設(shè)計、分支預(yù)測、寄存窗口、Cache設(shè)計、定時器設(shè)計等。 一、管道設(shè)計 ARM9處理采用6級流水線設(shè)計,每個階段都能夠并行處理多個指令。這樣就在
    的頭像 發(fā)表于 10-19 16:36 ?811次閱讀