- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二十章RTC实时时钟实验战舰STM32开发板
ALIENTEK 战舰STM32开发板
第二十章 RTC 实时时钟实验
前面我们介绍了两款液晶模块,这一章我们将介绍STM32 的内部实时时钟(RTC )。在本
章中,我们将利用ALIENTEK 2.8 寸TFTLCD 模块来显示日期和时间,实现一个简单的时钟。
另外,本章将顺带向大家介绍BKP 的使用。本章分为如下几个部分:
20.1 STM32 RTC 时钟简介
20.2 硬件设计
20.3 软件设计
20.4 下载验证
282
ALIENTEK 战舰STM32开发板
20.1 STM32 RTC 时钟简介
STM32 的实时时钟(RTC )是一个独立的定时器。STM32 的RTC 模块拥有一组连续计数
的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当
前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式
唤醒后RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC ,
以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP )
写保护。
RTC 的简化框图,如图20.1.1 所示:
图20.1.1 RTC 框图
RTC 由两个主要部分组成(参见图20.1.1),第一部分(APB1 接口)用来和APB1 总线相连。
此单元还包含一组16 位寄存器,可通过APB1 总线对其进行读写操作。APB1 接口由APB1 总
线时钟驱动,用来与APB1 总线连接。
另一部分(RTC 核心) 由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC 的
预分频模块,它可编程产生 1 秒的RTC 时间基准TR_CLK 。RTC 的预分频模块包含了一个20
位的可编程分频器(RTC 预分频器) 。如果在RTC_CR 寄存器中设置了相应的允许位,则在每个
TR_CLK 周期中RTC 产生一个中断(秒中断) 。第二个模块是一个32 位的可编程计数器,可被
初始化为当前的系统时间,一个32 位的时钟计数器,按秒钟计算,可以记录4294967296 秒,
约合136 年左右,作为一般应用,这已经是足够了的。
283
ALIENTEK 战舰STM32开发板
RTC 还有一个闹钟寄存器RTC_ALR ,用于产生闹钟。系统时间按TR_CLK 周期累加并与
存储在RTC_ALR 寄存器中的可编程时间相比较,如果RTC_CR 控制寄存器中设置了相应允许
位,比较匹配时将产生一个闹钟中断。
RTC 内核完全独立于RTC APB1 接口,而软件是通过APB1 接口访问RTC 的预分频值、计
数器值和闹钟值的。但是相关可读寄存器只在RTC APB1 时钟进行重新同步的RTC 时钟的上升
沿被更新,RTC 标志也是如此。这就意味着,如果APB1 接口刚刚被开启之后,在第一次的内
部寄存器更新之前,从APB1 上都处的RTC 寄存器值可能被破坏了(通常读到0 )。因此,若
在读取RTC 寄存器曾经被禁止的RTC APB1 接口,软件首先必须等待RTC_CRL 寄存器的RSF
位(寄存器同步标志位,bit3 )被硬件置1。
要理解RTC 原理,我们必须先通过对寄存器的讲解,让大家有一个全面的了解。接下来,
我们介绍一下RTC 相关的几个寄存器。首先要介绍的是RTC 的控制寄存器,RTC 总共有2 个
控制寄存器RTC_CRH 和RTC_CRL,两个都是16 位的。RTC_CRH 的各位描如图20.1.2 所示:
图20.1.2 RTC_CRH 寄存器各位描述
该寄存器用来控制中断的,我们本章将要用到秒钟中断,所以在该寄存器必须设置最低位
为1,以允许秒钟中断。我们再看看RTC_CRL 寄存器。该寄存器各位描述如图20.1.3 所示:
284
ALIENTEK 战舰STM32开发板
图20.1.3 RTC_CRL 寄存器各位描述
本章我们用到的是该寄存器的 0、3~5 这几个位,第 0 位是秒钟标志位,我们在进入闹钟
中断的时候,通过判断这位来决定是不是发生了秒钟中断。然后必须通过软件将该位清零(写
0 )。第3 位为寄存器同步标志位,我们在修改控制寄存器RTC_CRH
文档评论(0)