S3C2440 RTC
原创
©著作权归作者所有:来自51CTO博客作者JDSH0224的原创作品,请联系作者获取转载授权,否则将追究法律责任
概述: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