• RTC_Configuration


    Void RTC_Configuration(void)//

    实时时钟的初始化配置

     

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR 

    RCC_APB1Periph_BKP,ENABLE); 

     

     

    //

    使能

    APB1

    外设

    PWR

    (电源控制寄存器)

    BKP

    (备份寄存器)时钟。

     

    PWR_BackupAccessCmd(ENABLE); 

     

     

     

     

     

    //

    允许访问

    BKP

     

     

     

     

     

     

     

    BKP_DeInit(); 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    //

    复位备份域。

     

    #ifdef 

     

    RTCClockSource_LSI 

    RCC_LSICmd(ENABLE); 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    //

    使能内部低速晶振。

     

    While(RCC_GetFlagStatus(RCC_Flag_LSIRDY)==RESET)//

    等待

    LSI

    准备好

     

    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//

    选择

    LSI

    RTC

    时钟

     

    #elif 

     

    define 

     

    RTCClockSource_LSI 

    RCC_LSEConfig(RCC_LSE_ON); 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    //LSE

    晶振

    ON 

    While(RCC_GetFlagStatus(RCC_Flag_LSERAY)==RESET)// 

    等待

    LSE

    准备好

     

    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);// 

    选择

    LSE

    RTC

    时钟

     

    #endif 

    RCC_RTCCLKCmd(ENABLE); 

     

     

     

     

     

     

     

     

    //

    使能

    RTC

    时钟

     

     

     

    #ifdef 

     

    RTC_ClockOutput_ENABLE 

     

    //

    禁止

    Tamper

    引脚

     

    BKP_TamperPinCmd(DISABLE);//

    为了将

    RTCCLK/64

    Tamper

    引脚上输出,

    Tamper

    功能必

    须被禁止

     

    BKP_RTCCalibrationClockOutputCmd(ENABLE);//

    允许

    RTC

    时钟在

    Tamper

    上输出

     

    #endif 

     

     

    RTC_WaitForSynchro();//

    等待寄存器同步

     

    RTC_WaitForLastTask();//

    等待上次寄存器写操作完成

     

    RTC_ITConfig(RTC_IT_SEC,ENABLE);//

    允许

    RTC

    秒中断

     

    RTC_WaitForLastTask();//

    等待上次寄存器写操作完成

     

    #ifdef RTC_ClockSource_LSI//

    设置分频系数

     

    RTC_SetPrescalor(31999);//RTC

    周期

    =RTCCLK/RTC_PR=(32.000KHz/(31999+1)) 

    #elif define RTC_ClockSource_LSE 

    RTC_SetPrescaler(32767);// RTC

    周期

    =RTCCLK/RTC_PR=(32.768KHz/(32767+1)) 

    #endif 

    RTC_WaitForLastTask();//

    等待最近一次对

    RTC

    寄存器的写操作的完成。

     

    }

  • 相关阅读:
    钱伟长的养生之道:每天步行三千步
    GBDT 深入理解
    整形数据的存储方式
    进制基础学习
    C语言运算符(注意事项)
    PHP文件锁
    gcc options选项的优化及选择
    Datenode无法启动
    如何使用WebUploader。
    thinkphp如何实现伪静态
  • 原文地址:https://www.cnblogs.com/liufang/p/3728764.html
Copyright © 2020-2023  润新知