没志青年
发布于 2025-07-27 / 23 阅读
0

Cortex-M MCU - RTC与备份域

RTC(Real Time Clock)实时时钟,是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。

RTC 时钟的功能:

当主电源掉电时,电压调节器会自动切换供电。备用电池供电时,以下仍能正常工作:

  • RTC

  • LSE振荡器

  • 备份寄存器

  • PC13、PC14、PC15:注意这些引脚的驱动能力

(LSI 使用的是主电源)

使用这些功能,必须开启PWR时钟:

// 标准库
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

// HAL
__HAL_RCC_PWR_CLK_ENABLE();

RTC 标准库函数:

函数原型

作用

void RTC_ClearFlag(uint16_t RTC_FLAG)

清除RTC的指定挂起标志。

void RTC_ClearITPendingBit(uint16_t RTC_IT)

清除RTC的中断挂起位。

void RTC_EnterConfigMode(void)

进入RTC配置模式。

void RTC_ExitConfigMode(void)

退出RTC配置模式。

uint32_t RTC_GetCounter(void)

获取RTC计数器的当前值。

uint32_t RTC_GetDivider(void)

获取RTC分频器的当前值。

FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG)

检查指定的RTC标志是否已设置。

ITStatus RTC_GetITStatus(uint16_t RTC_IT)

检查指定的RTC中断是否发生。

void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState)

启用或禁用指定的RTC中断。

void RTC_SetAlarm(uint32_t AlarmValue)

设置RTC报警值。

void RTC_SetCounter(uint32_t CounterValue)

设置RTC计数器的值。

void RTC_SetPrescaler(uint32_t PrescalerValue)

设置RTC分频器的值。

void RTC_WaitForLastTask(void)

等待直到RTC寄存器的最后一次写操作完成。

void RTC_WaitForSynchro(void)

等待RTC寄存器与RTC APB时钟同步。


RTC 中断

闹钟中断

周期唤醒中断

时间戳中断

RTC 时钟源

RTC 操作

RTC 闹钟