RTC
示例列表
本章介绍 RTC 示例的详细信息。RTL87x2G 为 RTC 外设提供以下示例。
功能概述
RTC 是一个独立的 32 位递增计数器,支持预分频和比较器功能,支持 DLPS 唤醒功能。
特性列表
32KHz 时钟源。
12-bits 预分频计数器。
32-bits 只读 RTC 计数器。
计数器递增。
4 个独立的比较器(COMP0-3)。
RTC_CMP0-3_NV —— 用于 CPU 中断。
RTC_CMP0-3_WK —— 用于唤醒 DLPS 。
4 个独立的比较器(COMP0-3GT)。
RTC_CMP0-3GT —— 用于唤醒 DLPS。
支持比较器中断,Tick 中断和 RTC 溢出中断。
支持预分频计数器和预分频中断。
时钟与分频
RTC 的时钟示意图如图所示:

RTC 时钟
RTC 含有两个计数器:预分频计数器和 RTC 计数器。32 kHz 的时钟源经过预分频后转换为 RTC_CLK,以供 RTC 计数器使用。
预分频的值可以通过调用 RTC_SetPrescaler()
进行设置。
当 RTC 运行时,预分频计数器开始计数。每计数到设置的预分频值时,RTC 计数器加 1 。每次 RTC 计数器增加 1 时,都会触发一个 Tick 中断。
比较器与中断
RTC 支持 4 个独立的比较器,分别为 COMP0-3。可以通过 RTC_SetCompValue()
设置比较器的比较值。当 RTC 计数器的值达到比较值后,会触发相应通道的 RTC 中断。
RTC 支持预分频比较器。
当需要 RTC 计数的时间小于一个 Tick 时,可以使用
RTC_INT_PRE_COMP
中断。调用RTC_SetPreCompValue()
,设置预分频器比较值。当预分频器的计数达到设定的比较值时,将触发该中断。当需要 RTC 计数的时间大于一个 Tick 但不是 Tick 的整数倍时,可以使用
RTC_INT_PRE_COMP3
中断。在这种情况下,需要同时启用 RTC 比较器和预分频比较器,通过组合它们的比较值来实现非 Tick 整数倍的定时时间。调用RTC_SetCompValue()
设置 COMP3 通道的比较值,调用RTC_SetPreCompValue()
设置预分频器比较值。当 COMP3 通道比较器和预分频器都达到各自的比较值时,将触发该中断。请注意,此类型的定时只能与 COMP3 通道结合使用。
DLPS 唤醒
RTC 的所有比较通道和中断均支持 DLPS 唤醒功能。其中 COMP0-3GT 只能用于 DLPS 唤醒,不能用于 CPU 中断,其他通道均同时支持 DLPS 唤醒和 CPU 中断功能。
调用 RTC_SystemWakeupConfig()
,使能 RTC DLPS 唤醒功能。