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