带32位MCU和高精度ADC的SoC产品(五)

带32位MCU和高精度ADC的SoC产品(五),第1张

01 前 言 

在开发指南(四)中,我们简单介绍了PWM功能的使用,本章我们再结合LCD显示功能介绍一下实时时钟RTC功能,参考应用手册第14章节。

02 RTC结构图 

我们首先来看一下RTC的功能框图,如下图1:

带32位MCU和高精度ADC的SoC产品(五),poYBAGMsH9OAYLceAABs7kAJgGI943.png,第2张

图1. RTC结构图结构框图

从图中我们看到RTC模块整体分为RTC时钟源选择、时间初值设置、闹钟设置、中断控制和RTC使能控制构成,在时钟源、时间初值、闹钟和中断都配置完成后打开RTC使能,即可开始自动计时。

03 RTC计时显示 

接下来按照RTC初始化函数(见图2)简单介绍一下RTC的配置过程,第一步先打开RTC外设时钟使能信号,接下来选择RTC的时钟源,时钟源的精度会非常影响RTC计时的准确度,因此一般都选用外部32.768kHz晶体作为RTC的时钟源,为了演示方便我们选择用内部IHRC作为时钟源,然后设置时间初值,为了直观的看到年、月、日、星期、时、分、秒的每个数据都能发生变化,示例以24小时制设定时间初值为20年12月31日,23时59分40秒,使能RTC半秒中断(中断设置过程可以参考开发指南(二)中按键中断的相关内容),最后再使能RTC。

带32位MCU和高精度ADC的SoC产品(五),poYBAGMsI1-AFjjIAAG2Dz7laug983.png,第3张

图2. RTC初始化函数

RTC初始化完成后我们再验证一下RTC的计数功能(如图3),这里我们把显示时间的部分程序放在RTC半秒中断里执行,因此每0.5S就会进入一次中断,进入中断后要先将中断标志位清除,然后判断RTC_FLAG标志位(按键中断程序里设定的Key2按下时置起的标志位),当RTC_FLAG标志位置1后,读取日期和时间数据,再调用LCD显示函数,就能在LCD屏上显示正在计时的时间了。由于LCD屏的显示内容有限,这里我们先显示5S的时分秒(如图4),再显示半秒的月日星期(如图5),就能看到较完整的RTC计时显示了。

带32位MCU和高精度ADC的SoC产品(五),poYBAGMsI3qAHbImAAGdNyFXI7Y001.png,第4张

图3. RTC中断服务函数

带32位MCU和高精度ADC的SoC产品(五),pYYBAGMsI4SAJxTwAAEpPiV77as581.png,第5张

图4. 显示时分秒

带32位MCU和高精度ADC的SoC产品(五),poYBAGMsI4uAYVYEAAFQG0kn2PU544.png,第6张

图5. 显示月日星期

04 开发问题简析

开发阶段使用RTC功能要注意RTC的时钟源选择,为了获取更准确的计时效果,需要选择外部低频晶体作为时钟源,但晶体起振需要晶体与外围负载电容相匹配,因此要从晶体的相关资料中确认使用的晶体与实际的负载电容相匹配,才能保障晶体的有效起振。

05 总结

RTC实时时钟显示功能的使用只要配合好RTC半秒中断和LCD显示模块就可以准确显示计时,更多的是对外围电路的要求。
 

审核编辑:汤梓红

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2997558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存