經過漫長的等待 我的CR1216 鋰電池終于到貨了 .好了 這樣就可以做實驗了 經過了一段時間 我沒有 發表筆記了....
不知道 有沒有人對 電腦(現在的只能手機也辦得到了)斷開電源 (甚至是重裝系統) 依然能顯示出正確的時間 感到好奇.
void RTC_Configuration() { if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A7) { 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) == RESET); //等帶外部時鐘穩定 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//把外部低速時鐘設置為RTC的時鐘 RCC_RTCCLKCmd(ENABLE); //使能RTC的時鐘 RTC_WaitForSynchro(); //等待RTC寄存器與APB1總線時鐘同步 RTC_WaitForLastTask();//等待上一個操作完成 RTC_ITConfig(RTC_IT_SEC,ENABLE);//開啟RTC的秒中斷 RTC_WaitForLastTask();//等待上一個操作完成 RTC_SetPrescaler(32767);//設置預分頻值 RTC_WaitForLastTask();//等待上一個操作完成 BKP_WriteBackupRegister(BKP_DR1,0xA5A7);//在后備寄存器中做標記 RTC_SetCounter(z);//設置時間初始值 } else { RTC_WaitForSynchro();//等待RTC寄存器與APB1總線時鐘穩定 RTC_ITConfig(RTC_IT_SEC, ENABLE);//開啟秒中斷 RTC_WaitForLastTask();//等待上一個操作完成 } //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); // PWR_BackupAccessCmd(ENABLE); BKP_TamperPinCmd(DISABLE); //禁止入侵檢測 RCC_ClearFlag(); //清除中斷標志位 }
|