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 的时钟示意图如图所示:

../../../../../_images/rtc_clock.png

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 唤醒功能。