RTC时钟操作

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();

你可能感兴趣的:(STM32)