foggia2004

STM32之RTC配置与初始化

void rtc_init()
{
    //让电源和后备寄存器使能
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
    //后备寄存器访问使能
    PWR_BackupAccessCmd(ENABLE);
    //初始化后备寄存器区域
    BKP_DeInit();
    //启用外部时钟
    RCC_LSEConfig(RCC_LSE_ON);
    //等待外部时钟启用成功
    while(!RCC_GetFlagStatus(RCC_FLAG_LSERDY));
    //配置RTC的时钟源伟外部时钟LSE
    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
    //启用RTC
    RCC_RTCCLKCmd(ENABLE);
    //等待时钟同步
    RTC_WaitForSynchro();
    //等待上一个命令完成
    RTC_WaitForLastTask();
    //时钟计算公式:fTR_CLK=fRTCLK/(PRL[19:0]+1)
    //PRL[19:0]=32767,即预设的分频系数
    //fRTCLK=1Hz,即1秒
    RTC_SetPrescaler(32767);
    //等待上一个命令完成
    RTC_WaitForLastTask();
    //启用秒中断
    RTC_ITConfig(RTC_IT_SEC,ENABLE);
    //等待上一个命令完成
    RTC_WaitForLastTask();
}

 

 

posted on 2016-01-26 10:13  foggia2004  阅读(2804)  评论(0编辑  收藏  举报

导航