標(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 |