RTC是一種特殊的定時器,特殊之處在於RTC模塊和時鐘配置系統(RCC_BDCR寄存器)在後備區域(BKP),因此在系統復位或從待機模式喚醒後RTC的設置和時間維持不變。
由於在後備區域,所以不能人以訪問修改。
啓動訪問RTC的操作:
1、設置寄存器RCC_APB1ENR的PWREN 和BKPEN位來使能電源和後備接口時鐘。
2、設置寄存器PWR_CR的DBP位使能對後備寄存器和RTC的訪問。
RTC時鐘
RTC時鐘由兩部分組成,第一部分爲PCLK1,用於向RTC寄存器讀寫寄存器的時鐘。第二部分時鐘爲RTC的核心時鐘,例如時鐘計數等,RTC的核心時鐘源可有三種:
①HSE時鐘除以 128
②LSE振盪器時鐘
③LSI振盪器時鐘
RTC中斷類型
時鐘源可進行再次分頻作爲計數器的基本週期,最長可大一秒鐘,因此又稱爲秒中斷(可屏蔽);當計數器減到0時會出現下溢中斷(可屏蔽);鬧鐘中斷:當計數器與鬧鐘寄存器數值一樣時會出現鬧鐘中斷(可屏蔽)。
復位後不可變寄存器:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器。
讀RTC寄存器
可讀寄存器只在與
RTC APB1 時鐘進行重新同步的RTC時鐘的上升沿被更新,因此會在未同步時讀取寄存器時會出現不正確數據,通常會出現在以下三種情況之下:
①發生系統復位或電源復位
②系統剛從待機模式喚醒
③系統剛從停機模式喚醒
爲達到數據正確,在進行數據讀時需要查看同步標誌位RSF位。
配置RTC寄存器過程:
1. 查詢RTOFF位,直到RTOFF的值變爲’1’(查看上一次是否對寄存器寫入完成)
2. 置CNF值爲1 ,進入配置模式 (只有進入配置模式才能對寄存器寫入)
3. 對一個或多個RTC寄存器進行寫操作
4. 清除CNF標誌位,退出配置模式
5. 查詢RTOFF,直至RTOFF位變爲’1’ 以確認寫操作已經完成。
僅當CNF標誌位被清除時,寫操作才能進行,這個過程至少需要3個RTCCLK 週期。
注:RTC預分頻器餘數寄存器存儲的數據爲RTC的以時鐘源爲週期的計數,並非分頻後的週期。