嵌入式——實(shí)時(shí)時(shí)鐘(RTC)
發(fā)布時(shí)間:2024-01-29 15:12:46
一、初識(shí)RTC
1.簡介
實(shí)時(shí)時(shí)鐘是一個(gè)獨(dú)立的定時(shí)器。RTC模塊擁有一組連續(xù)計(jì)數(shù)的計(jì)數(shù)器,在相應(yīng)軟件配置下,可提供時(shí)鐘日歷的功能,計(jì)數(shù)頻率常為秒。修改計(jì)數(shù)器的值可以重新設(shè)置系統(tǒng)當(dāng)前的時(shí)間和日期。
2.特性
(1)32位的可編程計(jì)數(shù)器,可用于較長時(shí)間段的測量
(2)能在MCU掉電后運(yùn)行
(3) 低功耗
3.后備寄存器和RTC寄存器特性
(1)部分寄存器寫保護(hù):RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器不會(huì)被系統(tǒng)復(fù)位。
(2)數(shù)據(jù)存儲(chǔ)功能:RTC和后備寄存器不會(huì)被系統(tǒng)或電源復(fù)位源復(fù)位;當(dāng)從待機(jī)模式喚醒時(shí),也不會(huì)被復(fù)位。后備寄存器可用于保存掉電時(shí)的數(shù)據(jù)。
(3)獨(dú)立工作:RTC和后備寄存器通過一個(gè)開關(guān)供電,在VDD有效時(shí)該開關(guān)選擇VDD供電,否則由VBAT引腳供電。在VBAT供電時(shí)仍可繼續(xù)工作。
(4)2個(gè)獨(dú)立復(fù)位:APB1接口由系統(tǒng)復(fù)位;RTC核心只能由后備域復(fù)位;
二、RTC組成
1.相關(guān)寄存器
(1)控制寄存器高位(RTC_CRH)
(2)控制寄存器低位(RTC_CRL)
位5(RTOFF):RTC操作關(guān)閉。(指示對其寄存器進(jìn)行的最后一次操作的狀態(tài),即指示操作是否完成)
位4(CNF):配置標(biāo)志。(只有當(dāng)此位在被置’1’并重新由軟件清’0’后,從而允許向RTC_CNT、RTC_ALR或RTC_PRL寄存器寫入數(shù)據(jù))
(3)預(yù)分頻裝載寄存器高位(RTC_PRLH)
(4)預(yù)分頻裝載寄存器低位(RTC_PRLL)
(5)計(jì)數(shù)器寄存器高位(RTC_CNTH)
(6)計(jì)數(shù)器寄存器低位(RTC_CNTL)
(7)電源控制寄存器(PWR_CR)
(8)APB1 外設(shè)時(shí)鐘使能寄存器(RCC_APB1ENR)
(9)備份域控制寄存器(RCC_BDCR)
2.RTC結(jié)構(gòu)
RTC由兩個(gè)主要部分組成。第一部分(APB1接口)用來和APB1總線相連。另一部分(RTC核心)由一組可編程計(jì)數(shù)器組成,分成兩個(gè)主要模塊。第一個(gè)模塊是RTC的預(yù)分頻模塊(可編程產(chǎn)生最長為1秒的RTC時(shí)間基準(zhǔn)TR_CLK)。第二個(gè)模塊是一個(gè)32位的可編程計(jì)數(shù)器,可被初始化為當(dāng)前的系統(tǒng)時(shí)間。
(2)RTC的APB1單元還包含一組16位寄存器,可通過APB1,總線對其進(jìn)行讀寫操作。
(3)APB1接口由APB1總線時(shí)鐘驅(qū)動(dòng),用來與APB1總線接口。
(4)RTC的預(yù)分頻模塊包含的是一個(gè)20位的可編程分頻器(RTC預(yù)分頻器),分頻系數(shù)最高為2的20次方。
(5)RTC有3個(gè)專門的可屏蔽中斷:
(6)如果在RTC_CR寄存器中設(shè)置了相應(yīng)的允許位,則在每個(gè)TR_CLK周期中RTC產(chǎn)生一個(gè)中斷(秒中斷)。
(7)系統(tǒng)時(shí)間按TR_CLK周期累加并與存儲(chǔ)在RTC_ALR寄存器中的可編程時(shí)間相比較,如果RTC_CR控制寄存器中設(shè)置了相應(yīng)允許位,比較匹配時(shí)將產(chǎn)生一個(gè)中斷(鬧鐘中斷)。
3.RTC基本配置步驟
(5)退出配置模式:清除CNF位,等待RTOFF 位為1(RTC_CRL)即配置完成。
4.RTC系統(tǒng)配置流程描述
(5)查詢RTOFF,直至RTOFF