有关ARM RTC时钟使用心得

在做裸机电子相册的项目时,涉及到使用RTC作为时钟,对此不甚了解,因此去看了ARM9的开发笔记,具体内容如下,个人理解,可能有所缺陷。

首先贴一张RTC的原理图:

RTC是具有独立的电源,在断电后能够保持内部的计数和晶振工作。图中,XTIrtc和XT0rtc共同构成外部晶振,他传给2^15的一个时钟分频器,得到128HZ的频率这个频率用来产生滴答计数。当时钟计数为0时,产生TIME TICK的中断信号。Control register用来控制RTC实时时钟的功能复位寄存器用来充值SEC和MIN寄存器。闰年发生器用来产生闰年逻辑。报警发生器用来控制是否产生报警信号。他的原理不多说,在MINI2451的芯片手册上都有相关说明,我具体讲一下使用方法。

RTC在使用时,需要你打开它的读写使能,rRTCCON原本默认为0,,需置为1。然后输入相应时间位,分别是second, minute, hour, day, date, month, and year,他们会保存在RTC的寄存器中,分别是BCDSEC, BCDMIN,BCDHOUR, BCDDATE, BCDDAY, BCDMON, and BCDYEAR,读取数据时,也是从相应的寄存器中读取出来。结束后,关闭读写使能即可实现自动计时。 

以下贴上时钟初始化代码

void RTC_Time_Set( U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec )//时间设置函数
{
 rRTCCON = 1 ;  //RTC 读写使能
 rBCDYEAR = wRTCyear ;  //年
    rBCDMON  = wRTCmon ;  //月
    rBCDDATE = wRTCdate ;  //日 
 rBCDDAY  = wRTCday ;  //星期
 rBCDHOUR = wRTChour ;  //小时
    rBCDMIN  = wRTCmin ;  //分
    rBCDSEC  = wRTCsec ;  //秒
 
 rRTCCON &= ~1 ;  //RTC read and write disable
}

各寄存器地址如上,其实只要直接查手册就好了。
至于他的闹钟功能,因本次项目我并未使用到,不再赘述,下次用到了再谈。


你可能感兴趣的:(有关ARM RTC时钟使用心得)