RTC(Real Time Clock)实时时钟,是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。
RTC 时钟的功能:
当主电源掉电时,电压调节器会自动切换供电。备用电池供电时,以下仍能正常工作:
(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 闹钟