找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3275|回復: 0
打印 上一主題 下一主題
收起左側(cè)

STM32學習筆記之RTC

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-10 17:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經(jīng)過漫長的等待 我的CR1216 鋰電池終于到貨了 .好了 這樣就可以做實驗了  經(jīng)過了一段時間 我沒有 發(fā)表筆記了....

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表