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

S3C2440 RTC_晶振

主要的寄存器,如下

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

S3C2440 RTC_实时时钟_02

节拍时间计数器(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 ) ;
}

 打印结果输出:

S3C2440 RTC_实时时钟_03

 

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