通过设置时钟控制寄存器(CCR)可以选择RTC的计数时钟源,可由独立的32.769kHz振荡器提供或由Fpclk的分频信号提供。当使用Fpclk作为时钟源时,它的基准时钟分频器允许调节任何频率高于65.536kHz的外设时钟源产生一个32.768kHz的基准时钟,实现准确的计时操作。
RTC的寄存器框图如图4-29所示。实时时钟CTC计数器是一个15位的计数器,它位于秒计数器之前,CTC每秒计数32768个时钟;当有CTC秒进位时,完整时间寄存器(CTME0~CTMIE2)、RTC时间寄存器(SEC、MIN等)将会更新;RTC的中断有两种,一种是增量中断,由CIIR进行控制;另一种为报警中断,由AMR寄存器和各报警时间寄存器控制,如ALSEC、ALMIN等;报警位置寄存器ILR用来产生相应的中断标志;RTC时钟控制寄存器CCR用于使能实时时钟,CTC复位控制等。其中,用于表示“日”的日期寄存器有两个,分别为DOY和DOM,DOY表示为一年中的第几日,值为1~365(闰年为366);而DOM则为一月中的第几日,值为1~28/29/30/31,一般日期计数使用DOM即可。
图4-29 RTC的寄存器功能框图
RTC的基本操作方法如下:
●选择时钟源(CCR寄存器)。
●设置RTC基准时钟分频器(PREINT、PREFRAC)(根据上一步选择执行此步操作)。
●初始化RTC时钟值,如YEAR、MONTH、DOM等。
●报警中断设置,如CIIR、AMR等。
●启动RTC,即CCR的CLKEN位置位。
●读取完整时间寄存器值,或等待中断。
使用RTC时,VBAT引脚必须连接到V3引脚,或者连到一个独立的电源(如外部电池),否则VBAT应该接地。VBAT断电时,LPC2138不能保存RTC的状态,如果时钟源丢失、中断或改变,RTC也无法维持时间计数。RTC可以使用两个时钟源(VPB时钟Fpclk或来自RTCX1~2引脚的32kHz信号),如果将RTCX1~2引脚的32kHz信号作为时钟源,RTC可以完全独立工作,与VPB时钟无关。因此,在要使用RTC且对功耗敏感的应用中(如电池供电设备),可通过使用RTCX1~2引脚的32kHz信号和清除PCONP功率控制寄存器中PCRTC位来降低功耗。
1.设置RTC时钟
2.设置RTC使用独立振荡器
(www.daowen.com)
3.设置秒增量中断
4.设置RTC时间
5.读取RTC时间
例4-20 利用RTC实现万年历,通过SPI接口上的74HC595驱动4位LED数码管,能够显示出年、月、日、星期以及时间。利用按键中断控制显示状态,在年、月+日、时+分、秒+星期这4个状态之间反复切换,每按一次按键,显示状态切换一次。Proteus仿真电路如图4-30所示。
图4-30 利用RTC实现万年历的Proteus仿真电路
主程序文件main.c如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。