12.1 概述
實(shí)時(shí)時(shí)鐘Real TimeClock(簡(jiǎn)稱RTC),實(shí)時(shí)時(shí)鐘芯片是日常生活中應(yīng)用最為廣泛的消費(fèi)類電子產(chǎn)品之一。它為人們提供精確的實(shí)時(shí)時(shí)間,或者為電子系統(tǒng)提供精確的時(shí)間基準(zhǔn),目前實(shí)時(shí)時(shí)鐘芯片大多采用精度較高的晶體振蕩器作為時(shí)鐘源。有些時(shí)鐘芯片為了在主電源掉電時(shí),還可以工作,需要外加電池供電。
現(xiàn)在的ARM體系處理器基本都會(huì)內(nèi)置RTC模塊,STM32也不例外。STM32內(nèi)部RTC結(jié)構(gòu)如下圖所示。
RTC主要有兩個(gè)部分組成,第一部分的APB1接口用來(lái)和APB1總線相連,此單元還包含一組16位寄存器,可通過(guò)APB1總線對(duì)其進(jìn)行讀寫(xiě)操作。另一部分由一組可編程計(jì)數(shù)器組成,分成兩個(gè)主要模塊。第一個(gè)模塊是RTC的預(yù)分頻模塊,它可編程產(chǎn)生最長(zhǎng)為1秒的RTC時(shí)間基準(zhǔn)TR_CLK。RTC的預(yù)分頻模塊包含了一個(gè)20位的可編程分頻器。如果在RTC_CR寄存器中設(shè)置了相應(yīng)的允許位,則在每個(gè)TR_CLK周期中RTC產(chǎn)生一個(gè)中斷。第二個(gè)模塊是一個(gè)32位的可編程計(jì)數(shù)器,可被初始化為當(dāng)前的系統(tǒng)時(shí)間。系統(tǒng)時(shí)間按TR_CLK周期累加并與存儲(chǔ)在RTC_ALR寄存器中的可編程時(shí)間相比較,如果RTC_CR控制寄存器中設(shè)置了相應(yīng)允許位,比較匹配時(shí)將產(chǎn)生一個(gè)鬧鐘中斷。
RTC模塊和時(shí)鐘配置系統(tǒng)是在后備區(qū)域,即在系統(tǒng)復(fù)位或從待機(jī)模式喚醒后RTC的設(shè)置和時(shí)間維持不變。但是在系統(tǒng)復(fù)位后,會(huì)自動(dòng)禁止訪問(wèn)后備寄存器和RTC,以防止對(duì)后備區(qū)域的意外寫(xiě)操作。所以在要設(shè)置時(shí)間之前,先要取消備份區(qū)域?qū)懕Wo(hù)。
12.2 相關(guān)寄存器
12.2.1 控制寄存器1:RTC_CRH
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | OWIE | ALRIE | SECIE |
Bit 2:允許溢出中斷位
0:屏蔽溢出中斷
1:允許溢出中斷
Bit 1:允許鬧鐘中斷
0:屏蔽鬧鐘中斷
1:允許鬧鐘中斷
Bit 0:允許秒中斷
0:屏蔽秒中斷
1:允許秒中斷
12.2.2 控制寄存器2:RTC_CRL
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | RTOFF | CNF | RSF | OWF | ALRF | SECF |
Bit 5:RTC操作關(guān)閉
0:寫(xiě)操作未完成
1:操作已完成
Bit 4:配置標(biāo)志
0:退出配置模式
1:進(jìn)入配置模式
Bit 3:RTC同步標(biāo)志
RTC_CNT寄存器和RTC_DIV寄存器由軟件更新或清0時(shí),此位由硬件置1。在APB1復(fù)位后,或APB1時(shí)鐘停止后,此位必須由軟件清0。要進(jìn)行任何的讀操作之前,用戶程序必須等待這位被硬件置1
0:寄存器尚未被同步
1:寄存器已經(jīng)被同步
Bit 2:溢出標(biāo)志
當(dāng)32位可編程計(jì)數(shù)器溢出時(shí),此位由硬件置1。此位只能由軟件清0
0:無(wú)溢出
1:32位可編程計(jì)數(shù)器溢出
Bit 1:鬧鐘標(biāo)志
當(dāng)32位可編程計(jì)數(shù)器達(dá)到RTC_ALR寄存器所設(shè)置的預(yù)定值,此位由硬件置1。此位只能由軟件清0。
0:無(wú)鬧鐘
1:有鬧鐘
Bit 0:秒標(biāo)志
當(dāng)32位可編程預(yù)分頻器溢出時(shí),此位由硬件置1,同時(shí)RTC計(jì)數(shù)器加1。此位只能由軟件清除。
0:秒標(biāo)志條件不成立
1:秒標(biāo)志條件成立
12.2.3 預(yù)分頻裝載寄存器1:RTC_PRLH
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | PRL[19:16] |
Bit 3~Bit 0:RTC預(yù)分頻裝載值高位
12.2.4 預(yù)分頻裝載寄存器2:RTC_PRLL
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PRL[15:0] |
Bit 15~Bit 0:RTC預(yù)分頻裝載值低位
注:RTC時(shí)鐘頻率根據(jù)預(yù)分頻寄存器的值有如下計(jì)算公式。
其中RTCCLK代表的RTC的輸入時(shí)鐘,一般默認(rèn)32.768kHz。
12.3 實(shí)驗(yàn)例程
功能:讀取RTC的日期顯示在LCD上面。
(1)創(chuàng)建rtc.h文件輸入以下代碼。
/*********************************************************************************************************
RTC 驅(qū) 動(dòng) 文 件
*********************************************************************************************************/
#ifndef _RTC_H_
#define _RTC_H_
#include "sys.h"
/*********************************************************************************************************
數(shù) 據(jù) 結(jié) 構(gòu)
*********************************************************************************************************/
typedef struct
{
u8 year; //年
u8 month; //月
u8 date; //日
u8 hour; //時(shí)
u8 minute; //分
u8 second; //秒
}RTC_Data;
extern RTC_Data RTC_Time;
/*********************************************************************************************************
函 數(shù) 列 表
*********************************************************************************************************/
void RTC_Init( void ) ; //RTC初始化
void RTC_Set_Time( u8 year, u8 month, u8 date, u8 hour, u8 minute, u8 second ) ; //設(shè)置時(shí)間
void RTC_Get_Time( void ) ; //獲取時(shí)間
#endif
-
電源
+關(guān)注
關(guān)注
184文章
17841瀏覽量
251815 -
晶體振蕩器
+關(guān)注
關(guān)注
9文章
631瀏覽量
29253 -
時(shí)鐘芯片
+關(guān)注
關(guān)注
2文章
253瀏覽量
39975 -
RTC
+關(guān)注
關(guān)注
2文章
544瀏覽量
67032
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
STM32學(xué)習(xí)筆記(初學(xué)者快速入門)
STM32學(xué)習(xí)筆記(初學(xué)者快速入門)
STM32RTC實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)講解,從入門到放棄 精選資料分享
Stm32之RTC時(shí)鐘
CubeMX入門STM32 HAL庫(kù)的學(xué)習(xí)筆記
STM32入門學(xué)習(xí)筆記 精選資料分享
STM32各模塊學(xué)習(xí)筆記
STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)之keil5編程與GPIO開(kāi)發(fā)
![<b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>1——軟硬件基礎(chǔ)<b class='flag-5'>之</b>keil5編程與GPIO開(kāi)發(fā)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32內(nèi)部RTC時(shí)鐘脈沖實(shí)驗(yàn)參考程序
STM32入門學(xué)習(xí)筆記之基礎(chǔ)定時(shí)器實(shí)驗(yàn)(上)
![<b class='flag-5'>STM32</b><b class='flag-5'>入門</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b>基礎(chǔ)定時(shí)器<b class='flag-5'>實(shí)驗(yàn)</b>(<b class='flag-5'>上</b>)](https://file.elecfans.com/web2/M00/91/DF/pYYBAGPtkHiAPo0_AAEuO2PpDWA569.jpg)
STM32入門學(xué)習(xí)筆記之RTC實(shí)驗(yàn)(下)
STM32學(xué)習(xí)筆記之RTC實(shí)時(shí)時(shí)鐘1
![<b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>RTC</b>實(shí)時(shí)時(shí)鐘1](https://file1.elecfans.com/web2/M00/88/B9/wKgaomRwUFWAVQ1gAADmaX15GIg780.jpg)
STM32學(xué)習(xí)筆記之RTC實(shí)時(shí)時(shí)鐘2
![<b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>RTC</b>實(shí)時(shí)時(shí)鐘2](https://file1.elecfans.com/web2/M00/88/BA/wKgZomRwUFaAJXNGAALkIvX9IWc784.jpg)
評(píng)論