国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32-OLED屏+RTC實(shí)現(xiàn)簡易實(shí)時時鐘(下篇)

這篇具有很好參考價值的文章主要介紹了stm32-OLED屏+RTC實(shí)現(xiàn)簡易實(shí)時時鐘(下篇)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、RTC簡介

實(shí)時時鐘是一個獨(dú)立的定時器。RTC模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應(yīng)軟件配置下,可
提供時鐘日歷的功能。修改計數(shù)器的值可以重新設(shè)置系統(tǒng)當(dāng)前的時間和日期。

RTC模塊和時鐘配置系統(tǒng)(RCC_BDCR寄存器)處于后備區(qū)域,即在系統(tǒng)復(fù)位或從待機(jī)模式喚醒
后,RTC的設(shè)置和時間維持不變。但是在系統(tǒng)復(fù)位后,會自動禁止訪問后備寄存器和 RTC,
以防止對后備區(qū)域(BKP)的意外寫操作。所以在要設(shè)置時間之前, 先要取消備份區(qū)域(BKP)
寫保護(hù)。

二、RTC主要特性

挑了主要的特性:

1、32位的可編程計數(shù)器,可用于較長時間段的測量

2個分離的時鐘:用于APB1接口的PCLK1和RTC時鐘

3、可以選擇以下三種RTC的時鐘源:
HSE時鐘除以128
LSE振蕩器時鐘
LSI振蕩器時鐘

4、2個獨(dú)立的復(fù)位類型:
APB1接口由系統(tǒng)復(fù)位;
RTC核心(預(yù)分頻器、鬧鐘、計數(shù)器和分頻器)只能由后備域復(fù)位;

5、3個專門的可屏蔽中斷:
鬧鐘中斷,用來產(chǎn)生一個軟件可編程的鬧鐘中斷。
秒中斷,用來產(chǎn)生一個可編程的周期性中斷信號(最長可達(dá)1秒)。
溢出中斷,指示內(nèi)部可編程計數(shù)器溢出并回轉(zhuǎn)為0的狀態(tài)。

三、功能描述

RTC由兩個主要部分組成(參見下圖)。第一部分(APB1接口)用來和APB1總線相連。此單元還包
含一組16位寄存器,可通過APB1總線對其進(jìn)行讀寫操作。APB1接口由APB1總線時鐘驅(qū)動,用來與APB1總線接口。

另一部分(RTC核心)由一組可編程計數(shù)器組成,分成兩個主要模塊。第一個模塊是RTC的預(yù)分頻
模塊,它可編程產(chǎn)生最長為1秒的RTC時間基準(zhǔn)TR_CLK。第二個模塊是一個32位的可編程計數(shù)器,可被初始化為當(dāng)前的系統(tǒng)時間。

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

說白了APB1總線的作用是為RTC模塊提供通信和數(shù)據(jù)傳輸?shù)耐ǖ溃沟肦TC模塊能夠與其他外設(shè)進(jìn)行數(shù)據(jù)交換和通信。且在系統(tǒng)復(fù)位后需要控制APB1總線上的RCC_APB1ENR的PWREN和BKPEN位,使能電源和后備接口時鐘使能對后備寄存器和RTC的訪問

RTC預(yù)分頻器控制計數(shù)頻率,RTC_CNT與RTC_ALR值進(jìn)行對比(和定時器類似)即產(chǎn)生鬧鐘

四、RTC寄存器描述

1、RTC控制寄存器高位(RTC_CRH)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

中斷使能。因為在系統(tǒng)復(fù)位之后所有的中斷都被屏蔽(即此寄存器的所有位都被置為0),如果我們需要開啟相應(yīng)的中斷則給相應(yīng)的中斷位置1(執(zhí)行此操作的前提是RTC_CRL寄存器的標(biāo)志位RTOFF=0)即對RTC寄存器的寫操作完成。

2、RTC控制寄存器低位(RTC_CRL)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

此寄存器是RTC模塊的一些標(biāo)志位。第 0 位是秒鐘標(biāo)志位,我們在進(jìn)入鬧鐘中斷的時候,通過判斷這位來決定是不是發(fā)生了秒鐘中斷,此位只能通過軟件清除。第3位為寄存器同步標(biāo)志位,結(jié)合RTC框圖,只有當(dāng)寄存器同步后,才可以修改RTC_CRH和RTC_CRL的寄存器的值,否則修改的值無效。第4位是配置標(biāo)志,即要想RTC寄存器寫值時必須將此位置1。第5位,就是等待寫操作完成,否則寫入的值也無效。

所以RTC寄存器的配置過程應(yīng)該是這樣:
1. 查詢RTOFF位,直到RTOFF的值變?yōu)椤?’(判斷寫操作是否完成)
2. 置CNF值為1,進(jìn)入配置模式
3. 對一個或多個RTC寄存器進(jìn)行寫操作
4. 清除CNF標(biāo)志位,退出配置模式
5. 查詢RTOFF,直至RTOFF位變?yōu)椤?’以確認(rèn)寫操作已經(jīng)完成。

3、RTC預(yù)分頻裝載寄存器(RTC_PRLH/RTC_PRLL)

RTC_PRLH

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

RTC_PRLL

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件這兩個寄存器用來配置 RTC 時鐘的分頻數(shù)的,比如我們使用外部 32.768K 的晶振作為時鐘的輸入頻率,那么我們要設(shè)置這兩個寄存器的值為 32767,以得到一秒鐘的計數(shù)頻率。

4、RTC預(yù)分頻器余數(shù)寄存器(RTC_DIVH / RTC_DIVL)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件用戶可通過讀取RTC_DIV寄存器,以獲得預(yù)分頻計數(shù)器的當(dāng)前值,此寄存器是只讀寄存器,其值在RTC_PRL或RTC_CNT寄存器中的值發(fā)生改變后,由硬件重新裝載。這兩個寄存器的作用就是用來獲得比秒鐘更為準(zhǔn)確的時鐘,比如可以得到 0.1 秒,或者 0.01 秒等。

5、RTC計數(shù)器寄存器 (RTC_CNTH / RTC_CNTL)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件RTC_CNT寄存器用來存放計數(shù)器的計數(shù)值。沒過一秒此寄存器加1,可通過讀取該寄存器的值來獲得當(dāng)前的時間。

因為沒用到鬧鐘寄存器這里就不介紹了

五、其它寄存器

備份寄存器

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件數(shù)據(jù)備份寄存器,即使此寄存器斷電依然可以保存數(shù)據(jù),通過向此寄存器寫入數(shù)據(jù),當(dāng)斷電之后讀取此寄存器的數(shù)據(jù)進(jìn)行判斷跳過RTC的初始化環(huán)節(jié)。

2、APB1 外設(shè)時鐘使能寄存器(RCC_APB1ENR)和電源控制寄存器(PWR_CR)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件系統(tǒng)復(fù)位后,對后備寄存器和RTC的訪問被禁止,這是為了防止對后備區(qū)域(BKP)的意外寫操
作。執(zhí)行以下操作將使能對后備寄存器和RTC的訪問:

設(shè)置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能電源和后備接口時鐘

設(shè)置寄存器PWR_CR的DBP位,使能對后備寄存器和RTC的訪問。

3、備份域控制寄存器 (RCC_BDCR)

oled顯示時鐘程序,stm32,實(shí)時音視頻,嵌入式硬件

將LSEON位置1使能外部低速振蕩器,判斷LSERDY外部LSE是否就緒,最后RTCSEL置為01選擇LSE最為RTC的時鐘,就完成了對RTC部分對時鐘的配置。

在RTC初始化的時候應(yīng)該將BDRST位置1,清除備份區(qū)域

六、主函數(shù)代碼

int main(void)
 {
	delay_init();	    	 //延時函數(shù)初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
 	LED_Init();			     //LED端口初始化
	OLED_Init();			//初始化OLED      
	RTC_Init();	  			//RTC初始化
  OLED_ShowString(0,0,"RTC Test",12);  
	
  
	OLED_Refresh_Gram();		//更新顯示到OLED 
//	t=' ';  
	while(1) 
	{		
		switch(calendar.week)
		{
			case 0:
			OLED_ShowString(0,12,"Sunday",12); 
			break;
			case 1:
			OLED_ShowString(0,12,"Monday",12); 
			break;
			case 2:
			OLED_ShowString(0,12,"Tuesday",12); 
			break;
			case 3:
			OLED_ShowString(0,12,"Wednesday",12); 
			break;
			case 4:
			OLED_ShowString(0,12,"Thursday",12); 
			break;
			case 5:
			OLED_ShowString(0,12,"Friday",12); 
			break;
			case 6:
			OLED_ShowString(0,12,"Saturday",12); 
			break;
			default:
			break ;
		}
	
		OLED_ShowNum(0,24,calendar.hour,2,12);
		OLED_ShowString(12,24,":",12); 
		OLED_ShowNum(18,24,calendar.min,2,12);
		OLED_ShowString(30,24,":",12); 
		OLED_ShowNum(36,24,calendar.sec,2,12);
		
		OLED_ShowNum(0,36,calendar.w_year,4,12);
		OLED_ShowString(24,36,"/",12); 
		OLED_ShowNum(30,36,calendar.w_month,2,12);
		OLED_ShowString(42,36,"/",12); 
		OLED_ShowNum(48,36,calendar.w_date,2,12);
		
		
		OLED_Refresh_Gram();		//更新顯示到OLED 
	}	  
	
}

RTC模塊是參考原子哥的,其實(shí)大家只要把RTC功能框圖和RTC相關(guān)寄存器搞熟悉之后RTC模塊還是不難的。如果有其它問題可以評論或給我留言文章來源地址http://www.zghlxwxcb.cn/news/detail-800375.html

到了這里,關(guān)于stm32-OLED屏+RTC實(shí)現(xiàn)簡易實(shí)時時鐘(下篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32-RTC實(shí)時時鐘

    STM32-RTC實(shí)時時鐘

    目錄 RTC實(shí)時時鐘 功能框圖 UNIX時間戳 初始化結(jié)構(gòu)體 RTC時間結(jié)構(gòu)體 RTC日期結(jié)構(gòu)體 RTC鬧鐘結(jié)構(gòu)體 進(jìn)入和退出配置函數(shù) 實(shí)驗環(huán)節(jié)1:顯示日歷 常規(guī)配置 RTC配置 測試環(huán)節(jié) 實(shí)驗現(xiàn)象 實(shí)驗環(huán)節(jié)2:鬧鐘 常規(guī)配置 RTC配置 測試環(huán)節(jié) 實(shí)驗現(xiàn)象 STM32的RTC外設(shè),實(shí)質(zhì)上是一個 掉電后還繼續(xù)運(yùn)

    2024年02月06日
    瀏覽(26)
  • 【STM32】RTC(實(shí)時時鐘)

    【STM32】RTC(實(shí)時時鐘)

    本質(zhì):計數(shù)器 RTC中斷是外部中斷(EXTI) 當(dāng)VDD掉電的時候,Vbat可以通過電源---實(shí)時計時 STM32的RTC外設(shè)(Real Time Clock),實(shí)質(zhì)是一個 ? 掉電 ? 后還繼續(xù)運(yùn)行的定時器。從定時器的角度來說,相對于通用定時器TIM外設(shè),它十分簡單, 只有很純粹的計時和觸發(fā)中斷的功能 ;但從

    2024年02月03日
    瀏覽(27)
  • STM32——RTC實(shí)時時鐘

    STM32——RTC實(shí)時時鐘

    Unix 時間戳(Unix Timestamp)定義為從UTC/GMT的1970年1月1日0時0分0秒開始所經(jīng)過的秒數(shù),不考慮閏秒 時間戳存儲在一個秒計數(shù)器中,秒計數(shù)器為32位/64位的整型變量 世界上所有時區(qū)的秒計數(shù)器相同,不同時區(qū)通過添加偏移來得到當(dāng)?shù)貢r間 底層使用秒計數(shù)器可以節(jié)省硬件設(shè)計電路,

    2024年01月23日
    瀏覽(24)
  • 【STM32學(xué)習(xí)】實(shí)時時鐘 —— RTC

    【STM32學(xué)習(xí)】實(shí)時時鐘 —— RTC

    STM32RTC實(shí)時時鐘實(shí)驗講解,從入門到放棄 【STM32】RTC休眠喚醒(停機(jī)模式)、獨(dú)立看門狗開啟狀態(tài)下 關(guān)于STM32使用RTC喚醒停止模式的設(shè)置 RTC(Real Time Clock):實(shí)時時鐘,是指可以像時鐘一樣輸出實(shí)際時間的電子設(shè)備,一般會是集成電路,因此也稱為時鐘芯片??傊琑TC只是個能靠電

    2024年02月01日
    瀏覽(22)
  • STM32-實(shí)時時鐘RTC-2

    STM32-實(shí)時時鐘RTC-2

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年01月20日
    瀏覽(26)
  • STM32-RTC實(shí)時時鐘詳解

    STM32-RTC實(shí)時時鐘詳解

    RTC的本質(zhì)很簡單,就是一個時鐘經(jīng)過精確分頻最后得到的一個1Hz的時鐘,也可以說是計數(shù)器,其他大部分功能都是基于這個計數(shù)器設(shè)計的數(shù)字邏輯。 本文講的RTC是基于STM32F030來講的,相比與F1系列的RTC來說,M0的將很多原本需要軟件實(shí)現(xiàn)的功能硬件化了,使用起來更加便利。

    2024年02月04日
    瀏覽(37)
  • STM32基礎(chǔ)10--實(shí)時時鐘(RTC)

    STM32基礎(chǔ)10--實(shí)時時鐘(RTC)

    ?目錄 前言 RTC框圖 STM32實(shí)時時鐘電路 功能需要 STM32CubeMx配置RTC 配置RCC 配置RTC 配置時間,鬧鐘,喚醒 開啟中斷 設(shè)置中斷優(yōu)先級 功能代碼實(shí)現(xiàn) STM32Cude生成RTC初始化 自定義觸發(fā)鬧鐘次數(shù)變量? 重寫周期喚醒回調(diào)函數(shù) 重寫鬧鐘中斷函數(shù) ????????在做51單片機(jī)項目時,如果需

    2023年04月11日
    瀏覽(20)
  • STM32學(xué)習(xí)筆記(十二)丨RTC實(shí)時時鐘

    STM32學(xué)習(xí)筆記(十二)丨RTC實(shí)時時鐘

    ???本次課程采用單片機(jī)型號為STM32F103C8T6。 ???課程鏈接:江協(xié)科技 STM32入門教程 ??往期筆記鏈接: ??STM32學(xué)習(xí)筆記(一)丨建立工程丨GPIO 通用輸入輸出 ??STM32學(xué)習(xí)筆記(二)丨STM32程序調(diào)試丨OLED的使用 ??STM32學(xué)習(xí)筆記(三)丨中斷系統(tǒng)丨EXTI外部中斷 ??

    2024年02月16日
    瀏覽(23)
  • STM32中的RTC實(shí)時時鐘和配套鬧鐘設(shè)置

    主要初始化函數(shù),以及設(shè)置鬧鐘函數(shù),鬧鐘中斷函數(shù) RTC.c RTC.h main.c

    2024年04月23日
    瀏覽(25)
  • 【STM32】讀寫B(tài)KP備份寄存器&RTC實(shí)時時鐘

    【STM32】讀寫B(tài)KP備份寄存器&RTC實(shí)時時鐘

    目錄 BKP BKP簡介 BKP基本結(jié)構(gòu) BKP測試代碼 RTC RTC簡介 RTC框圖 RTC基本結(jié)構(gòu) 硬件電路 RTC操作注意事項 接線圖 初始化 使用BKP解決只初始化一次時間 ?初始化參考代碼 RTC設(shè)置時間 RTC讀取時間 完整代碼 MyRTC.c MyRTC.h main.c BKP(Backup Registers)備份寄存器 BKP可用于存儲用戶應(yīng)用程序數(shù)據(jù)

    2024年04月22日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包