久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

歡(huan)迎來到高(gao)端IT就(jiu)業培訓專家——華(hua)清(qing)遠見(jian)教育科技集團

400-611-6270

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 >
實時時鐘RTC
時間:2018-08-16作者:華清遠見

實時時鐘的(de)(de)(de)縮寫是RTC(Real_Time Clock)。RTC 是集成(cheng)電路,通(tong)(tong)常(chang)稱為時鐘芯片(pian)。RTC通(tong)(tong)常(chang)情況(kuang)下需(xu)要外接32.768kHz晶體(ti),匹(pi)配電容(rong)、備份(fen)電源等(deng)元件。RTC除了I/O口的(de)(de)(de)定位不同(tong),還有功(gong)能上的(de)(de)(de)區別(bie),比如與(yu)MCU的(de)(de)(de)接口,現在常(chang)用的(de)(de)(de)是I2C接口(距離短,可(ke)以(yi)與(yu)其(qi)他器件共(gong)用)還有RAM的(de)(de)(de)數(shu)量、靜態功(gong)耗大小、中斷的(de)(de)(de)數(shu)量,特別(bie)是精度的(de)(de)(de)區別(bie)。 RTC的(de)(de)(de)精度可(ke)以(yi)說與(yu)溫度有很(hen)大的(de)(de)(de)關(guan)系(xi),而溫度會影響晶體(ti)的(de)(de)(de)頻率。本章介紹的(de)(de)(de)是集成(cheng)在芯片(pian)內部(bu)的(de)(de)(de)時鐘功(gong)能模塊(kuai)。

1 RTC介紹

在一個嵌入式系(xi)統中,通常采用RTC 來提供可靠的系(xi)統時(shi)間,包括時(shi)分(fen)秒和(he)年月日等,而且要求在系(xi)統處于關機狀態(tai)下(xia)它(ta)也(ye)能(neng)夠(gou)正常工作(通常采用后備電池供電)。它(ta)的外圍也(ye)不(bu)需要太多的輔助電路,典型的就是只需要一個高精度的32.768kHz晶體和(he)電阻電容等,如圖1所(suo)示。



圖12-1 RTC外(wai)接電路

2 RTC控制器

實(shi)時時鐘(RTC)單元可以(yi)(yi)通過(guo)備用(yong)電池供電,因(yin)此,即使系統電源(yuan)關閉,它也可以(yi)(yi)繼續工作(zuo)。RTC 可以(yi)(yi)通過(guo)STRB/LDRB 指(zhi)令將(jiang)8 位BCD 碼數據(ju)送至CPU。這(zhe)些(xie)BCD 數據(ju)包括秒(miao)、分、時、日期、星(xing)期、月(yue)和年。RTC 單元通過(guo)一個外部的32.768kHz晶振(zhen)提供時鐘。RTC具有定時報警的功能,如圖2所示。RTC 控(kong)制器功能說明:


圖12-2 RTC控(kong)制器

● 時鐘數據采用BCD 編碼。
        ● 能夠對閏年的年月日進行自動處理。
        ● 具有告警功能,當系統處于關機狀態時,能產生告警中斷。
        ● 具有獨立的電源輸入。
 ;       ● 提供毫秒級時(shi)鐘中(zhong)斷(duan)(duan),該(gai)中(zhong)斷(duan)(duan)可用于作(zuo)為嵌入式操作(zuo)系統的內核時(shi)鐘。

3 RTC控制器寄存器詳解

如表3所示為相關(guan)寄存(cun)器描述。

表3 RTC控(kong)制寄存(cun)器

RTCCON 描述 復位值
保留 [31:9] 保留 0
TICEN [8] 嘀嗒計時器
0 = 禁止
1 = 使能
0
TICCKSEL [7:4] 嘀嗒計時器子時鐘源選擇
4'b0000 = 32768 Hz       4'b0001 = 16384 Hz
4'b0010 = 8192 Hz        4'b0011 = 4096 Hz
4'b0100 = 2048 Hz        4'b0101 =1024 Hz
4'b0110 =512 Hz          4'b0111 =256 Hz
4'b1000 =128 Hz          4'b1001 =64 Hz
4'b1010 =32 Hz           4'b1011 =16 Hz
4'b1100 =8 Hz            4'b1101 =4 Hz
4'b1110 =2 Hz            4'b1111 =1 Hz
4'b0000
CLKRST [3] RTC時鐘計數復位
0 = 不復位
1 = 復位
0
CNTSEL [2] BCD計數選擇
0 = 分配 BCD 計數
1 = 保留
0
CLKSEL [1] BCD 時鐘選擇
0 = XTAL 1/2 divided clock
1 = 保留(XTAL 供頻)
0
RTCEN [0] RTC控制使能
0 = 禁止
1 = 使能
0

如表(biao)4所示為BCD秒寄存器描(miao)述。

表4 BCDSEC寄存器(qi)

BCDSEC 描述 復位值
保留 [31:7] 保留 --
SECDATA [6:4] BCD 值 0~5 --
[3:0] 0~9 --

如表5所示(shi)為BCD分鐘(zhong)寄存器描述。

表5 BCDMIN寄(ji)存器

BCDMIN 描述 復位值
保留 [31:7] 保留 --
MINDATA [6:4] BCD 值 0~5 --
[3:0] 0~9 --

如表6所示為BCD小時寄存器描述。

表6 BCDHOUR寄存器(qi)

BCDHOUR 描述 復位值
保留 [31:7] 保留 --
HOURDATA [5:4] BCD 值 0~5 --
[3:0] 0~9 --

如表7所示為BCD日期寄存器描述。

表7 BCDDATE寄(ji)存器

BCDDATE 描述 復位值
保留 [31:7] 保留 --
DATEDATA [5:4] BCD 值 0~3 --
[3:0] 0~9 --

如表8所示為BCD星期寄存器描述。

表8 BCDDAY寄存器

BCDDAY 描述 復位值
保留 [31:3] 保留 --
DAYDATA [2:0] 1~7 --

如表9所示為BCD月(yue)寄存器描述。

表9 BCDMON寄存器

BCDMON 描述 復位值
保留 [31:5] 保留 --
MONDATA [4] BCD 值 0~1 --
  [3:0] 0~9 --

如表10所(suo)示(shi)為BCD年寄存器描述。

表10 BCDYEAR寄存器(qi)

BCDYEAR 描述 復位值
保留 [31:8] 保留 --
YEARDATA [7:4] BCD 值 0~9 --
[3:0] 0~9 --

4 RTC應用示例

1.相關(guan)寄存器定(ding)義(yi)

typedef struct {

                        unsigned int BCDSEC;
                        unsigned int BCDMIN;
                        unsigned int BCDHOUR;
                        unsigned int BCDDATE;
                        unsigned int BCDDAY;
                        unsigned int BCDMON;
                        unsigned int BCDYEAR;
        }rtcbcd;
   ;     #define RTCBCD (* (volatile rtcbcd *)0xEA300070)

2.主程序

下面的(de)代碼實(shi)現(xian)了一(yi)個(ge)將RTC的(de)年月日、時(shi)分秒讀出(chu)的(de)功能,可以將注釋掉的(de)代碼打開來復(fu)位值。

void rtc_init(void)
        {
                RTCCON = 0X01; //使能RTC控制些功能
                RTCBCD.BCDSEC = 0x0; // 2012 03 15, 12:59:00.以BCD碼格式寫入
                RTCBCD.BCDMIN = 0x59; 
                RTCBCD.BCDHOUR =0x12;
   &nbsnbsp;            RTCBCD.BCDDATE = 0x15;
                RTCBCD.BCDMON = 0x03;
                RTCBCD.BCDYEAR = 0x12;
                RTCCON = 0; //關閉RTC控制些功能
        }
        int main()
        {
                unsigned int i = 0;
                uart0_init();
                rtc_init(); //初始化時間
                while(1) //循環打印時間
                {
                        printf("hour %x : min %x : sec %x\r",RTCBCD.BCDHOUR,RTCBCD.BCDMIN,RTCBCD.BCDSEC);
                        for(i=0;i<10000000;i++);
                }
                return 0;
  &nbsp;&nbsp;    }

2.實驗過程及現象:

編譯生成的.elf文件,硬件接線。并連接好FS_JTAG仿真器套件。將程序編譯后獲得.elf文件,將該文件通過仿真器下載并運行在目標(biao)版(ban)上,終端打印信(xin)息如下所(suo)示。

hour 12 : min 59 : sec 17
        hour 12 : min 59 : sec 18
        hour 12 : min 59 : sec 19
&nbsp;     &nbsp; hour 12 : min 59 : sec 20


發表評論

全國咨詢電話(hua):400-611-6270,雙休日及(ji)節假日請致電值班手機:15010390966

在線咨詢: 曹老(lao)師(shi)QQ(3337544669), 徐(xu)老(lao)師(shi)QQ(1462495461), 劉老(lao)師(shi) QQ(3108687497)

企業培(pei)訓洽(qia)談專線(xian):010-82600901,院(yuan)校合作洽(qia)談專線(xian):010-82600350,在線(xian)咨詢:QQ(248856300)

Copyright 2004-2018 華(hua)清遠見(jian)教育科技(ji)集(ji)團 版權(quan)所有(you) ,京ICP備16055225號,京公(gong)海(hai)網安備11010802025203號