STM32再學習——實時時鐘(RTC)
RTC,是Real Time Counter的縮寫。在MCU中,其實是一組連續(xù)計數(shù)的計數(shù)器,各個產(chǎn)品及系列各不相同。因此,在相應(yīng)的軟件配置下,可提供時鐘日歷的功能。當然,修改這個計數(shù)器的值也就重新設(shè)置了系統(tǒng)當前的時間和日期。
本文引用地址:http://m.butianyuan.cn/article/182407.htmRTC只是一個時鐘,但與RTC相連的有兩個系統(tǒng)時鐘,一個是APB1接口的PCLK1另一個是RTC時鐘[注意1]。這樣,RTC功能也就分為兩個部分:第一部分,APB1接口部分,與APB1總線相連,MCU也就是通過這條總線對其進行讀寫操作。另一部,RTC核,由一系列可編程計數(shù)器組成,這部分又再細分為兩個組件:預分頻模塊與32位可編程計數(shù)器。預分頻模塊用來產(chǎn)生最長為1秒的RTC時間基準,而32位的可編程的計數(shù)器可被初始化為當前的系統(tǒng)時間。
下圖為RTC簡化框圖:
讀RTC寄存器
從上面的工作原理可知,RTC核完全獨立于RTC APB1接口,軟件通過APB1接口來訪問RTC的各項參數(shù),包括預分頻值、計數(shù)器值等等,但是這些參數(shù)值只在RTC時鐘的上升沿被更新,之后,RTC時鐘會與RTC APB1時鐘進行重新同步。這里會有一些問題出現(xiàn),就是在APB1接口剛剛被開啟時,第一次的內(nèi)部寄存器更新之前,那么此時從RTC寄存器中讀出的第一個值可能被破壞了,例如下面所述的三種情況:
發(fā)生系統(tǒng)復位或電源復位
系統(tǒng)剛從待機模式喚醒
系統(tǒng)剛從停機模式喚醒
可以簡單得出,在APB1接口被禁止時(復位,無時鐘或斷電)RTC核仍保持運行狀態(tài)。因此,在禁止了RTC的APB1接口后,軟件首先須等等RSF位被硬件置1.
RTC功能配置
1. 查詢RTOFF 位,直到RTOFF 的值變?yōu)椤?”
2. 置CNF 值為1,進入配置模式
3. 對一個或多個RTC 寄存器進行寫操作
4. 清除CNF 標志位,退出配置模式
5. 查詢RTOFF,直至RTOFF 位變?yōu)椤?” 以確認寫操作已經(jīng)完成。
僅當CNF 標志位被清除時,寫操作才能進行,這個過程至少需要3 個RTCCLK 周期。
注意1:RTC時鐘必須小于PCLK1時鐘的四分之一以上。
塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
評論