目录
1.RTC
1.1RTC基本概念
1.1.1RTC的简介
-
实时时钟 (RTC) 是一个独立的BCD定时器/计数器。RTC提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。两个32位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12或24小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为28、29(闰年)、30和31天。并且还可以进行夏令时补偿。其它32位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期
-
RTC的时钟来源 :从RTC的定时器特性来说,它是一个32位的计数器,只能向上计数。它使用的时钟源有三种, 分别为高速外部时钟的128分频(HSE/128)、低速内部时钟LSI以及低速外部时钟 LSE 。 使HSE分频时钟或LSI的话在主电源VDD掉电的情况下,这两个时钟来源都会受到影响,因此没法保证RTC正常工作。因此RTC一般使用低速外部时钟LSE,频率通常为实时时钟模块中常用的32.768KHz,这是因为32768 = ,分频容易实现,所以它被广泛应用到RTC模块。
- RTC的供电:掉电,是指主电源VDD断开的情况,为了RTC外设掉电继续运行,必须接上锂电池给STM32的RTC、备份发卡通过VBAT引脚供电。当主电源VDD有效时,由VDD给RTC外设供电;而当 VDD掉电后,由VBAT给RTC外设供电。
- RTC的数据存储:RTC中的数据都保存在属于RTC的备份域中,若主电源VDD和VBAT都掉电,那么备份域中保存的所有数据将丢失。 备份域除了RTC模块的寄存器,还有42个16位的寄存器可以在VDD掉电的情况下保存用户程 序的数据,系统复位或电源复位时,这些数据也不会被复位。在主电源VDD有效的情况下 (待机),RTC还可以配置闹钟事件使STM32退出待机模式
1.1.2RTC框图
- 时间戳:就是某个外部事件上跳沿或下跳沿变化发生时刻的日历时间,例如行车记录仪在发生碰撞时保存的,发生碰撞时刻的RTC日期时间数据就是时间戳。启用RTC的时间戳功能。可以选择复用脚RTC_AF1或RTC_AF2作为事件源RTC_TS。监测其上跳沿及下跳沿变化。当复用引脚上发生事件时。RTC就将当前的日期时间数据,记录到时间戳寄存器。还会产生时间戳信号。响应此时间中断就可以读取出时间戳寄存器的数据
- 影子寄存器:日历时间计数器的数值暂存寄存器,每隔两个RTCCLK周期就将当前的日历值复制到影子寄存器,当程序读取日期时间数据时,读取的是影子寄存器的内容。而不会影响日历计数器的工作
- 备份寄存器:STM32F407上有20个32位备份寄存器这些备份寄存器是在备份域中的由备用电池VBAT供电在系统主电源关闭成复位时,备份寄存器的数据不会丢失所以可以用于保存用户定义数据当检测到入侵事件发生时MCU就会复位这20个备份寄存器的内容,MCU会产生中断事件信号同时还会记录时间戳数据
- 参考信号RTC_REFIN:RTC的日历更新可以与一个参考时钟信号RTC_REFIN通常为50HZ成-60Hz同步,参考时钟信号RTC_REFIN的精度应该高于32.768kz的LSE时钟,启用RTC_REFIN检时日历仍然由LSE提供时钟,而RTC_REFIN用于补偿不准确的日历更新频率
- RTC唤醒:RTC还有两个可编程的闹钟A/B,如果设置了闹钟A/B的时间,则闹钟A/B设定时间会和当前日历时间对比,如果时间相等,会产生ALRA/BF事件
- 入侵检测:也可以记录时间戳数据入侵检测输入信号源有两个可以配置为边缘检测或带滤波的电平检测
1.2.RTC的功能说明
1.2.1时钟和预分频器
- 预分频器RTC_PRER由7位的异步预分频器PREDIV_A和15位的同步预分频器PREDIV_S组成。异步预分频器时钟CK_APRE用于为二进制RTC_SSR亚秒递减计数器提供时钟,同步预分频器时钟CK_SPRE用于更新日历。
-
要使用频率为32.768kHz的LSE获得频率为1Hz的内部时钟 (ck_spre),需要将异步预分频系数设置为128,并将同步预分频系数设置为256。
-
分频系数的最小值为 1,最大值为。
-
ck_spre时钟既可以用于更新日历,也可以用作16位唤醒自动重载定时器的时基。为获得较短的超时周期,还可以将16位唤醒自动重载定时器与经可编程的4位异步预分频器分频的RTCCLK一同运行
1.2.2实时时钟和日历
- RTC时间寄存器 (RTC_TR)
\