STM32 拓展 RTC(实时时钟)

发布于:2025-02-11 ⋅ 阅读:(126) ⋅ 点赞:(0)

RTC简介

RTC(Real Time Clock,实时时钟)。是一个掉电后仍然可以继续运行独立定时器

RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。

RTC实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断)。但其高级之处也就在于掉电之后还可以正常运行

掉电能运行,不是说它不需要电能,而是它有一套专门的供电系统。

掉电继续运行

这里所说的掉电是指的VDD掉电。VDD掉电后,由VBAT负责给后备区域供电。VBAT由电路中的纽扣电池来供电,一般的电路设计中都会加上备用电池。只要这个电池有电,则后备区域就一直会有电供应。

RTC功能框图

1 RTC的时钟源

RTC有3路时钟来源:HSE(8MHz)/128,LSE(32.768KHz), (40KHz)。其中,如果 使用HSE或LSI的话,当主电源掉电的话,这两个始终都会受到影响,RTC就无法正常工作。所以,一般的通用做法是使用LSE。2个原因:一是LSE不受主电源掉电的影响它再后备供电,二是它的频率是我们都是选择32768Hz,正好是2^15,分频容易实现。

2 APB1接口

用来和APB1总线相连。此单元还包含一组 16 位寄存器,可通过APB1总线对其进行读写操作。APB1接口由APB1总线时钟驱动,用来与APB1总线连接。

通过APB1接口可以访问RTC的相关寄存器(预分频值,计数器值,闹钟值)。

3 RTC预分频模块

PRL:20位需要两个寄存器(16位)存放。

DIV:20位需要两个寄存器(16位)存放。

这个模块是RTC预分频模块,属于后备区域,VDD掉电后,可以在VBAT下继续运行。包含了一个20位的可编程分频器(RTC预分频器)。它可编程产生 1 秒的 RTC 时间基准 TR_CLK。如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。

4 32位可编程计数器

这个模块也属于后备区域,是一个32位的可编程计数器,可被初始化为当前的系统时间。一个32位的时钟计数器,按秒钟计算,可以记录4294967296秒,约合136年左右,作为一般应用,这已经是足够了的。

ALR:闹钟计时器。

5 中断

从图中可以看到一共有3个中断:

秒中断:每计时1s产生一次中断。

计数器溢出中断。136年才会产生溢出,一般用不上。

RTC闹钟中断。RCT_CNT和RTC_ALR会比较相等,如果相等表示闹钟时间到,会产生闹钟中断。


网站公告

今日签到

点亮在社区的每一天
去签到