RTC 是一個獨立的定時器,能夠在 STM32 的低功耗模式下運行。
選擇 RTC 時鐘源
RTC 時鐘的時鐘源能夠有三種選擇,分別是 HSE 高速晶振、LSE 低速晶振、LSI 內部晶振,如題下圖所示。
通過 RCCHSEConfig()、RCCLSEConfig()、RCC_LSICmd() 三個函數能夠分別對上述三種時鐘進行設置。
本質上分別是對 RCCCR、RCCBDCR、RCC_CSR 中相對應寄存器進行設置。
通過 RCC_RTCCLKConfig() 等函數能夠選擇 RTC 的時鐘源,如下圖所示:
RTC 結構
RTC 和 BKP 的結構如上圖所示,陰影部分是 BKP 區域,其中有 RTC 相關的寄存器,后備區域獨立于 CPU,通過對 PWRCR 寄存器中 DBP 的置位,即 PWRBackupAccessCmd() 函數,能夠開啟 RTC 和 BKP 區域的寫使能,理論上說,設置 RTCCRL 寄存器中的 CNF 位即 RTCEnterConfigMode() 函數也能夠讓 RTC 進入設置模式,但目前操作不成功。
RTCPRL 置位后,RTCCNT 計數器開始運行,配合 RTCALR、RTCCR 等寄存器,開始實現 RTC 功能。
RTCWaitForSynchro() 函數,讀 RTCCLR 寄存器中 RSF 位,確保RTCCNT、RTCALR或RTCPRL已經被同步。(若在讀取RTC寄存器時,RTC的APB1接口曾經處于禁止狀態,則軟件首先必須等待RTCCRL寄存器中的RSF位(寄存器同步標志)被硬件置’1’。)
RTCWaitForLastTask() 函數,讀 RTCCLR 寄存器中 RTOFF 寄存器,判斷上一次操作是否已完成。
RTCITConfig(RTCITSEC,ENABLE) 函數,開啟 RTC 中的秒中斷,RTC 中共有三種中斷,如上圖所示,由 RTCCR 寄存器中的相關標志位管理。
RTCSetPrescaler() 函數設置上圖中 RTCPRL 寄存器,即預分頻值,PRL 寄存器修改后會裝載進 RTCDIV 寄存器,通過讀 RTCDIV 寄存器能夠得到 RTC_PRL 寄存器中的值。
RTC 和 PWR 待機模式
STM32 能夠通過某些操作進入待機模式(Standby Mode),待機模式能夠通過 RTC 的鬧鐘中斷喚醒(Alarm),其中有兩點需要注意:
中斷需要在進入待機模式前啟動,進入待機模式后無法配置 RTC 寄存器。
PWR 模式被喚醒后,執行完 Alarm 中斷處理程序,會重新從主函數開始運行。
-
晶振
+關注
關注
34文章
2868瀏覽量
68054 -
STM32
+關注
關注
2270文章
10900瀏覽量
356156 -
定時器
+關注
關注
23文章
3249瀏覽量
114842 -
RTC
+關注
關注
2文章
538瀏覽量
66573 -
時鐘源
+關注
關注
0文章
93瀏覽量
15974
發布評論請先 登錄
相關推薦
如何對實時時鐘進行低功耗 RTC規范和相關的設計挑戰
![如何對實時時鐘進行低功耗 <b class='flag-5'>RTC</b>規范和<b class='flag-5'>相關</b>的設計挑戰](https://file.elecfans.com/web1/M00/D3/9A/pIYBAF_QaQ6ABRksAACeT4eY8X8404.png)
總結RTC(Real Time Clock)實時時鐘相關的知識
關于RTC時鐘的知識點
DS1302 RTC有關的知識介紹
STM32F030_RTC實時時鐘相關的知識資料下載
![STM32F030_<b class='flag-5'>RTC</b>實時時鐘<b class='flag-5'>相關</b>的<b class='flag-5'>知識</b>資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【STM32】RTC詳解
![【STM32】<b class='flag-5'>RTC</b>詳解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RTC技術基礎知識
![<b class='flag-5'>RTC</b>技術基礎<b class='flag-5'>知識</b>](https://file1.elecfans.com/web2/M00/88/C0/wKgaomRwdY6ABpu1AAFPbIZb29Q331.jpg)
什么是RTC?RTC的基礎知識
![什么是<b class='flag-5'>RTC</b>?<b class='flag-5'>RTC</b>的基礎<b class='flag-5'>知識</b>](https://file1.elecfans.com/web2/M00/A1/84/wKgaomTsBcaAD58WAAAqdJcPh60679.png)
評論