第二十章RTC实时时钟实验战舰STM32开发板.pdf

第二十章RTC实时时钟实验战舰STM32开发板.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二十章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)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档