S3C2440 RTC

来源:互联网 发布:淘宝网 卖家中心在哪 编辑:程序博客网 时间:2024/06/11 04:38

 

概述:RTC时钟控制,晶振32.768KHZ

主要的寄存器,如下

实时时钟控制寄存器(RTCCON):该寄存器由4位构成

节拍时间计数器(TICNT):该寄存器可以用于RTOS(实时操作系统)的时钟节拍数

RTC闹钟控制(RTCALM):包括全局闹钟寄存器的控制,以及年月日时分秒闹钟寄存器的使能

闹钟秒寄存器(ALMSEC):如题,注意是BCD码

闹钟分寄存器(ALMMIN):。。。。

闹钟时寄存器(ALMHOUR):。。。

闹钟日寄存器(ALMDATE):。。。

闹钟月寄存器(ALMMON):。。。

闹钟年寄存器(ALMYEAR):。。。

BCD秒寄存器(BCDSEC):。。。。

BCD分寄存器(BCDMIN):。。。。

BCD时寄存器(BCDHOUR):。。。。

BCD日寄存器(BCDDATA):。。。。

BCD月寄存器(BCDMON):。。。。

BCD年寄存器(BCDYEAR):。。。。

 

源码如下:

void RTC_Time_Set( void )
{
 rRTCCON = 1 ;  //RTC read and write enable

 rBCDYEAR = 0x13 ;  //年
 rBCDMON  = 0x09 ;  //月
 rBCDDATE = 0x01 ;  //日 
 rBCDDAY  = 0x06 ;  //星期
 rBCDHOUR = 0x00 ;  //小时
 rBCDMIN  = 0x15 ;   //分
 rBCDSEC  = 0x38 ;  //秒
 
 rRTCCON &= ~1 ;  //RTC read and write disable
}

void RTC_Display(void)
{
 U16 year ;
 U8 month, day ;  // week
 U8 hour, minute, second ;

 RTC_Time_Set() ;
   
    Uart_Printf( "\nRTC TIME Display, press ESC key to exit !\n" ) ;

 while( Uart_GetKey() != ESC_KEY )
 {
  rRTCCON = 1 ;  //RTC read and write enable

  year = 0x2000+rBCDYEAR  ;  //年
  month = rBCDMON  ;  //月
  day = rBCDDATE  ;  //日 
//  week = rBCDDAY  ;  //星期
  hour = rBCDHOUR  ;  //小时
  minute = rBCDMIN  ;  //分
  second = rBCDSEC  ;  //秒
  
  rRTCCON &= ~1 ;  //RTC read and write disable

  Uart_Printf( "RTC time : %04x-%02x-%02x %02x:%02x:%02x\n", year, month, day, hour, minute, second );
  Delay( 900 ) ;
 }

 打印结果输出:

 

更详细的设计:http://www.2cto.com/kf/201307/227170.html