当前位置:网站首页>实时时钟 (RTC)

实时时钟 (RTC)

2022-07-05 06:01:00 比特冬哥


一、RTC简介

实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。

执行以下操作将使能对后备寄存器和RTC的访问:
● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟
● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。

二、主要特性

● 可编程的预分频系数:分频系数最高为220。
● 32位的可编程计数器,可用于较长时间段的测量。
● 2个分离的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟频率的四分之一以上)。
● 可以选择以下三种RTC的时钟源:
─ HSE时钟除以128; ─ LSE振荡器时钟;
─ LSI振荡器时钟节RTC时钟。
● 2个独立的复位类型:
─ APB1接口由系统复位;
─ RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位
● 3个专门的可屏蔽中断:
─ 闹钟中断,用来产生一个软件可编程的闹钟中断。
─ 秒中断,用来产生一个可编程的周期性中断信号(最长可达1秒)。 ─ 溢出中断,指示内部可编程计数器溢出并回转为0的状态。

三、功能描述

1. 概述

RTC由两个主要部分组成(参见下图)。第一部分(APB1接口)用来和APB1总线相连。此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。APB1接口由APB1总线时钟驱动,用来与APB1总线接口。

另一部分(RTC核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频模块,它可编程产生最长为1秒的RTC时间基准TR_CLK。RTC的预分频模块包含了一个20位的可编程分频器(RTC预分频器)。如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间。系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。
在这里插入图片描述

2. 复位过程

除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器外,所有的系统寄存器都由系统复位或电源复位进行异步复位。
RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器仅能通过备份域复位信号复位。

3. 读RTC寄存器

RTC核完全独立于RTC APB1接口。

软件通过APB1接口访问RTC的预分频值、计数器值和闹钟值。但是,相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。RTC标志也是如此的。

这意味着,如果APB1接口曾经被关闭,而读操作又是在刚刚重新开启APB1之后,则在第一次的内部寄存器更新之前,从APB1上读出的RTC寄存器数值可能被破坏了(通常读到0)。下述几种情况下能够发生这种情形:
● 发生系统复位或电源复位
● 系统刚从待机模式唤醒
● 系统刚从停机模式唤醒

所有以上情况中,APB1接口被禁止时(复位、无时钟或断电)RTC核仍保持运行状态。
因此,若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置’1’。

: RTC的 APB1接口不受WFI和WFE等低功耗模式的影响

4. 配置RTC寄存器

必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器。
另外,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是’1’时,才可以写入RTC寄存器。

配置过程:

  1. 查询RTOFF位,直到RTOFF的值变为’1’
  2. 置CNF值为1,进入配置模式
  3. 对一个或多个RTC寄存器进行写操作
  4. 清除CNF标志位,退出配置模式
  5. 查询RTOFF,直至RTOFF位变为’1’以确认写操作已经完成。

仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK周期。

5. RTC标志的设置

在每一个RTC核心的时钟周期中,更改RTC计数器之前设置RTC秒标志(SECF)。在计数器到达0x0000之前的最后一个RTC时钟周期中,设置RTC溢出标志(OWF)。在计数器的值到达闹钟寄存器的值加1(RTC_ALR+1)之前的RTC时钟周期中,设置RTC_Alarm和RTC闹钟标志(ALRF)。

对RTC闹钟的写操作必须使用下述过程之一与RTC秒标志同步:
● 使用RTC闹钟中断,并在中断处理程序中修改RTC闹钟和/或RTC计数器。
● 等待RTC控制寄存器中的SECF位被设置,再更改RTC闹钟和/或RTC计数器。

在这里插入图片描述

四、RTC寄存器描述

1. RTC控制寄存器高位(RTC_CRH)

在这里插入图片描述
这些位用来屏蔽中断请求。

注意:系统复位后所有的中断被屏蔽,因此可通过写RTC寄存器来确保在初始化后没有挂起的中断请求。当外设正在完成前一次写操作时(标志位RTOFF=0),不能对RTC_CRH寄存器进行写操作。
RTC功能由这个控制寄存器控制。一些位的写操作必须经过一个特殊的配置过程来完成

2. RTC控制寄存器低位(RTC_CRL)

在这里插入图片描述
RTC的功能由这个控制寄存器控制。当前一个写操作还未完成时(RTOFF=0时),不能写RTC_CR寄存器。

  1. 任何标志位都将保持挂起状态,直到适当的RTC_CR请求位被软件复位,表示所请求的中断已经被接受。
  2. 在复位时禁止所有中断,无挂起的中断请求,可以对RTC寄存器进行写操作。
  3. 当APB1时钟不运行时,OWF、ALRF、SECF和RSF位不被更新。
  4. OWF、ALRF、SECF和RSF位只能由硬件置位,由软件来清零。
  5. 若ALRF=1且ALRIE=1,则允许产生RTC全局中断。如果在EXTI控制器中允许产生EXTI线 17中断,则允许产生RTC全局中断和RTC闹钟中断。
  6. 若ALRF=1,如果在EXTI控制器中设置了EXTI线 17的中断模式,则允许产生RTC闹钟中断;如果在EXTI控制器中设置了EXTI线 17的事件模式,则这条线上会产生一个脉冲(不会产生RTC闹钟中断)。

3. RTC预分频装载寄存器(RTC_PRLH/RTC_PRLL)

预分频装载寄存器用来保存RTC预分频器的周期计数值。它们受RTC_CR寄存器的RTOFF位保护,仅当RTOFF值为’1’时允许进行写操作。
RTC预分频装载寄存器高位(RTC_PRLH)
在这里插入图片描述

RTC预分频装载寄存器低位(RTC_PRLL)

在这里插入图片描述
: 如果输入时钟频率是32.768kHz(fRTCCLK),这个寄存器中写入7FFFh可获得周期为1秒钟的信号。

4. RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)

在TR_CLK的每个周期里,RTC预分频器中计数器的值都会被重新设置为RTC_PRL寄存器的值。用户可通过读取RTC_DIV寄存器,以获得预分频计数器的当前值,而不停止分频计数器的工作,从而获得精确的时间测量。此寄存器是只读寄存器,其值在RTC_PRL或RTC_CNT寄存
器中的值发生改变后,由硬件重新装载。
RTC预分频器余数寄存器高位(RTC_DIVH)
在这里插入图片描述
RTC预分频器余数寄存器低位(RTC_DIVL)
在这里插入图片描述

5. RTC计数器寄存器 (RTC_CNTH / RTC_CNTL)

RTC核有一个32位可编程的计数器,可通过两个16位的寄存器访问。计数器以预分频器产生的TR_CLK时间基准为参考进行计数。RTC_CNT寄存器用来存放计数器的计数值。他们受RTC_CR 的 位 RTOFF 写保护,仅当 RTOFF 值 为 ’1’ 时,允许写操作。在高或低寄存器(RTC_CNTH或RTC_CNTL)上的写操作,能够直接装载到相应的可编程计数器,并且重新装载
RTC预分频器。当进行读操作时,直接返回计数器内的计数值(系统时间)。

RTC计数器寄存器高位(RTC_CNTH)
在这里插入图片描述
RTC计数器寄存器低位(RTC_CNTL)
在这里插入图片描述

6. RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)

当可编程计数器的值与RTC_ALR中的32位值相等时,即触发一个闹钟事件,并且产生RTC闹钟中断。此寄存器受RTC_CR寄存器里的RTOFF位写保护,仅当RTOFF值为’1’时,允许写操作。

RTC闹钟寄存器高位(RTC_ALRH)
在这里插入图片描述
RTC闹钟寄存器低位(RTC_ALRL)
在这里插入图片描述

7. RTC寄存器映像

RTC寄存器是16位可寻址寄存器,具体描述如下:
在这里插入图片描述

原网站

版权声明
本文为[比特冬哥]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Dustinthewine/article/details/125608367