RTC(Real Time Clock):实时时钟
1、RTC是个独立的BCD定时计数器,提供一个日历时钟,两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。
2、两个32位寄存器包含二进制码十进制格式(BCD)的秒,分钟,小时(12/24小时制),星期几,日期,月份和年份,此外还可以提供二进制的亚秒值。
3、系统还可以自动将月份的天数补偿为28、29(闰年),30,31天。并且还可以进行夏令时补偿
BCD码:亦称二进制十进数。用4位二进制数来表示1位十进制数中的0~9这10个数码。
操作相关的库函数:
1、RTC时钟源和时钟操作函数;
void RCC_RTCCLKConfig(uint32_t CLKSource);//时钟源选择;
void RCC_RTCCLKCmd(FunctionalState NewState);//时钟使能;
2、RTC初始化函数
ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct);
trypedef struct
{
uint32_t RTC_HourFormat;//小时格式:24/12
uint32_t RTC_AsynchPrediv;//异步分频系数
uint32_t RTC_SynchPrediv;//同步分频系数;
}RTC_InitTypeDef;
3、日历配置相关函数
ErrorStatus RTC_SetTime(uint32_t RTC_Format,RTC_TimeTypeDef* RTC_TimeStruct);
void RTC_GetTime(uint32_t RTC_Format,RTC_TimeTypeDef* RTC_TimeStruct);
ErrorStatus RTC_SetDate(uint32_t RTC_Format,RTC_Dae TypeDef* RTC_DataStruct);
void RTC_GetDate(uint32_t RTC_Format,RTC_Date TypeDef* RTC_DateStruct);
uint32_t RTC_GetSubSecond(void);
4、RTC闹钟相关函数
ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm,FunctionalState NewState);
void RTC_SetAlarm();
void RTC_GetAlarm();
void RTC_AlarmSubSecondConfig();
uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm);
5、RTC周期唤醒相关函数:
void RTC_WakeUpClockConfig();
void RTC_SetWakeUpCounter();
uint32_t RTC_GetWakeUpCounter(void);
RTC_WakeUpCmd(DISABLE);//关闭WAKEUP
6、RTC中断配置以及状态相关函数
void RTC_ITConfig();
FlagStatus RTC_GetFlgStatus(uint32_t RTC_FLAG);
void RTC_ClearFlag(uint32_t RTC_FLAG);
ITStatus RTC_GetITStatus(uint32_t RTC_IT);
void RTC_ClearITPendingBit();
7、RTC相关约束函数
void RTC_WriteProtectionCmd();//取消写保护
ErrorStatus RTC_EnterInitNode();//进入配hi模式,RTC_ISR_INITF位设置位1
void RTC_ExitInitMode(void);//退出初始化模式
8、其他函数
uint32_t RTC_ReadBackupRegister();
void RTC_WriteBackupRegister();
void RTC_ITConfig();