標(biāo)題: STM32學(xué)習(xí)筆記之RTC [打印本頁(yè)]

作者: xiaos    時(shí)間: 2015-4-10 17:29
標(biāo)題: STM32學(xué)習(xí)筆記之RTC
經(jīng)過(guò)漫長(zhǎng)的等待 我的CR1216 鋰電池終于到貨了 .好了 這樣就可以做實(shí)驗(yàn)了  經(jīng)過(guò)了一段時(shí)間 我沒有 發(fā)表筆記了....

不知道 有沒有人對(duì) 電腦(現(xiàn)在的只能手機(jī)也辦得到了)斷開電源 (甚至是重裝系統(tǒng)) 依然能顯示出正確的時(shí)間 感到好奇.
void RTC_Configuration()
{
if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A7)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR |RCC_APB1Periph_BKP, ENABLE);//開啟電源和后備寄存器時(shí)鐘
       PWR_BackupAccessCmd(ENABLE);//使能后備寄存器
       BKP_DeInit();//設(shè)置后備寄存器為默認(rèn)值
       RCC_LSEConfig(RCC_LSE_ON);//開啟外部低速時(shí)鐘
       while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); //等帶外部時(shí)鐘穩(wěn)定
       RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//把外部低速時(shí)鐘設(shè)置為RTC的時(shí)鐘
       RCC_RTCCLKCmd(ENABLE);    //使能RTC的時(shí)鐘
RTC_WaitForSynchro();     //等待RTC寄存器與APB1總線時(shí)鐘同步
RTC_WaitForLastTask();//等待上一個(gè)操作完成
       RTC_ITConfig(RTC_IT_SEC,ENABLE);//開啟RTC的秒中斷
       RTC_WaitForLastTask();//等待上一個(gè)操作完成
       RTC_SetPrescaler(32767);//設(shè)置預(yù)分頻值
RTC_WaitForLastTask();//等待上一個(gè)操作完成
       BKP_WriteBackupRegister(BKP_DR1,0xA5A7);//在后備寄存器中做標(biāo)記
       RTC_SetCounter(z);//設(shè)置時(shí)間初始值
      
}
       else
       {
              RTC_WaitForSynchro();//等待RTC寄存器與APB1總線時(shí)鐘穩(wěn)定
              RTC_ITConfig(RTC_IT_SEC, ENABLE);//開啟秒中斷
              RTC_WaitForLastTask();//等待上一個(gè)操作完成
       }
            
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
      
// PWR_BackupAccessCmd(ENABLE);
BKP_TamperPinCmd(DISABLE);   //禁止入侵檢測(cè)
        RCC_ClearFlag();     //清除中斷標(biāo)志位
}







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1