经过漫长的等待 我的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(); //清除中断标志位 }
|