理论教育 ARM嵌入式系统基础与应用:任务应用举例

ARM嵌入式系统基础与应用:任务应用举例

时间:2023-11-03 理论教育 版权反馈
【摘要】:当使用Fpclk作为时钟源时,它的基准时钟分频器允许调节任何频率高于65.536kHz的外设时钟源产生一个32.768kHz的基准时钟,实现准确的计时操作。其中,用于表示“日”的日期寄存器有两个,分别为DOY和DOM,DOY表示为一年中的第几日,值为1~365;而DOM则为一月中的第几日,值为1~28/29/30/31,一般日期计数使用DOM即可。图4-30 利用RTC实现万年历的Proteus仿真电路主程序文件main.c如下:

ARM嵌入式系统基础与应用:任务应用举例

通过设置时钟控制寄存器(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即可。

978-7-111-44508-1-Chapter04-180.jpg

图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时钟

978-7-111-44508-1-Chapter04-181.jpg

2.设置RTC使用独立振荡器

978-7-111-44508-1-Chapter04-182.jpg(www.daowen.com)

3.设置秒增量中断

978-7-111-44508-1-Chapter04-183.jpg

4.设置RTC时间

978-7-111-44508-1-Chapter04-184.jpg

5.读取RTC时间

978-7-111-44508-1-Chapter04-185.jpg

例4-20 利用RTC实现万年历,通过SPI接口上的74HC595驱动4位LED数码管,能够显示出年、月、日、星期以及时间。利用按键中断控制显示状态,在年、月+日、时+分、秒+星期这4个状态之间反复切换,每按一次按键,显示状态切换一次。Proteus仿真电路如图4-30所示。

978-7-111-44508-1-Chapter04-186.jpg

图4-30 利用RTC实现万年历的Proteus仿真电路

主程序文件main.c如下:

978-7-111-44508-1-Chapter04-187.jpg

978-7-111-44508-1-Chapter04-188.jpg

978-7-111-44508-1-Chapter04-189.jpg

978-7-111-44508-1-Chapter04-190.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈