資料介紹
我用的是STM32庫函數(shù):兩個知識點:
一、RTC時鐘框圖分析(重要)
二、時間是怎樣顯示出來的(簡析)
一、RTC時鐘框圖分析(重要)
先熟悉一下幾個知識點:
1、STM32的實時時鐘(RTC)是一個獨立的定時器!
2、RTC模塊和時鐘配置系統(tǒng)(RCC_BDCR寄存器)是在后備區(qū)域,即在系統(tǒng)復(fù)位火從待機模式喚醒后RTC的設(shè)置和時間維持不變。
RTC這章中,對RTC相關(guān)的寄存器的操作特別重要,我在這里不解釋了,請查閱手冊。。
先上圖!
RTC時鐘框圖
RTC時鐘框圖分為完全獨立的兩個部分:1、APB1接口部分(用來RTC相關(guān)的寄存器);2、RTC核心;
第一部分:APB1接口。注意:這里涉及到寄存器RTC_CRL中的RSF位,這位是寄存器的同步標志,具體內(nèi)容去看STM32參考手冊RTC這一章。
第二部分:RTC核心。
這里分為兩個模塊:
(1)RTC預(yù)分頻器模塊;
(2)一個32位的可編程計數(shù)器;
下面開始分析第二部分:
先給大家介紹下后備區(qū)域的幾個特別重要的寄存器:
1、RTC_DIV(重要):RTC預(yù)分頻器余數(shù)寄存器。這個寄存器的作用是來獲得比秒鐘更加準確的時鐘(0.1s,0.01s),該寄存器是自減的,用來保存還需要多少個時鐘周期獲得一個秒信號。這里加上一個公式(STM32參考手冊里有):fTR_CLK=fRTCCLK/(PRL[19:0] 1) 到這里是書上的原話~!
解釋一下,RTC_DIV寄存器的值是由RTC_PRL(RTC預(yù)分頻器裝載寄存器)提供的,而RTC_DIV寄存器的時鐘頻率是由RTCCLK提供的(看圖)。比如我們把RTC_PRL值設(shè)為32767,則RTC_DIV寄存器的值也為32767,他和RTCCLK的時鐘頻率是一樣的(這里根據(jù)上面的公式,RTC_PRL加1,則RTC_DIV也加1)。RTCCLK的時鐘周期是1/32768(s),也就是每一個RTCCLK的時鐘周期,RTC_DIV自減1,直至到1s鐘后,被硬件重新裝載,也就是1s鐘減32768次。那他到底是怎么提供0.1s,甚至是0.01s的呢?
舉個例子就明白了。比如我想要得到1.12秒的這個時間,就要求RTC_DIV自減0.12/(1/32768)次。RTC_DIV只得到0.12s的時間,還有1s時間從哪兒來?他是TR_CLK提供的。這個問題會在下文講解。
2、RTC_PRL:RTC預(yù)分頻裝載寄存器。
這個寄存器有兩個作用:
(1)提供給RTC_DIV的重新裝載值;
(2)設(shè)置時鐘分頻系數(shù)。
第一個作用不講了。第二個作用:設(shè)置時鐘分頻系數(shù)。比如我們使用32.768KHz的晶振作為時鐘輸入,那么我們配置這個寄存器值位32767,就可以得到1s鐘的計數(shù)頻率(32768/(32767 1),單位(HZ))。
3、RTC_CNT(重要):RTC計數(shù)器寄存器。這個寄存器較簡單,用來記錄秒鐘值。如果之前對RTC_CR(控制寄存器),的相關(guān)中斷允許位配置的話,RTC_CNT寄存器可以產(chǎn)生一個溢出中斷。
4、RTC_ALR:RTC鬧鐘寄存器。從圖中就可以看出來,很簡單。用來標記鬧鐘產(chǎn)生時間,如果RTC_CNT的值和RTC_ALR的值相等的話,并使能中斷的話(在RTC_CR(控制寄存器)中配置),會產(chǎn)生一個鬧鐘中斷。
后備區(qū)域的寄存器就給大家介紹到這兒。相比大家通過上面的介紹結(jié)合框圖,頭腦里面應(yīng)該有個大致流程了吧。沒有~!?臥槽~那就給大家理一遍思路
首先外部加進來一個時鐘信號RTCCLK(32.768K),然后設(shè)置RTC_PRL的分頻系數(shù)為32767,得到一個秒時鐘信號TR_CLK(1HZ)。當TR_CLK每過一個時鐘周期,產(chǎn)生一個RTC_Second(秒鐘中斷),同時RTC_CNT計數(shù)器(記錄秒值)加1。如果要求更精準的時間,還可以在RTC_CR寄存器的RSF位被置1時去讀RTC_DIV的值。
二、時間是怎樣顯示出來的(簡析)
主函數(shù)中有這么兩條語句:
LCD_ShowString(60,130,200,16,16," - - "); ①
LCD_ShowString(60,162,200,16,16," : : "); ②
在看這三條語句(這里統(tǒng)稱”中間三條語句“):
LCD_ShowNum(60,130,calendar.w_year,4,16);
LCD_ShowNum(100,130,calendar.w_month,2,16);
LCD_ShowNum(124,130,calendar.w_date,2,16);
和這三條語句(這里統(tǒng)稱”最后三條語句“):
LCD_ShowNum(60,162,calendar.hour,2,16);
LCD_ShowNum(84,162,calendar.min,2,16);
LCD_ShowNum(108,162,calendar.sec,2,16);
很顯然,中間三條語句是顯示年月日的對應(yīng)①,最后三條語句是顯示時分秒的對應(yīng)②。這些結(jié)構(gòu)體成員都在初始化函數(shù)(RTC_Init();)中被賦值了,怎么賦值的,大家自己去研究吧。然后在硬件中,TR_CLK的每個時鐘周期都會觸發(fā)秒中斷,在秒中斷服務(wù)函數(shù)中又對時間進行了更新。
想顯示時間,是不是先得設(shè)置一個基礎(chǔ)時間,然后讓系統(tǒng)在基礎(chǔ)時間上,進行自加。
第一步:設(shè)置一個基礎(chǔ)時間。在對時鐘進行配置時(在初始化函數(shù)(RTC_Init();中配置),里面有個RTC_Set();函數(shù),此函數(shù)會你設(shè)置的年月日時分秒進行計算,算出從1970年到你設(shè)置那個時刻總共是多少秒(這博主也不知道為什么是1970年),然后把算出來的這個秒值賦給RTC_CNT計數(shù)器作為初值。
第二步:系統(tǒng)自己更新時間(自加)。時間是怎么更新的,這里給大家簡單提一下。。在更新函數(shù)(RTC_Get();)中,首先會讀取RTC_CNT計數(shù)器中的值,然后經(jīng)過一番倒計算,計算出年月日時分秒和星期,分別賦值給那些時間的結(jié)構(gòu)體變量。于是在主函數(shù)的while(1)中,會不斷的被秒中斷刷新時間,并顯示在LCD上。
這樣,一個完整的時鐘就顯示在LCD屏幕上了。大功告成!
轉(zhuǎn)自:
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- bq32000實時時鐘(RTC)數(shù)據(jù)表
- BQ32002實時時鐘(RTC)數(shù)據(jù)表
- bq3285實時時鐘(RTC)數(shù)據(jù)表
- 基于STM32單片機RTC實時時鐘使用庫文件設(shè)計 5次下載
- DA1468x SoC 的實時時鐘(RTC) 概念
- STM32CubeMX系列|RTC實時時鐘
- stm32f4 RTC實時時鐘解析
- STM32-(27):RTC實時時鐘
- STM32CubeMX | 40 - 實時時鐘RTC的使用(日歷和鬧鐘)
- ABB-RTU560實時時鐘模塊560RTC01 7次下載
- STM32F030_RTC實時時鐘相關(guān)的知識資料下載
- 使用STM32F103RB單片機實現(xiàn)RTC實時時鐘實驗的資料詳細說明 11次下載
- 實時時鐘RTC的程序應(yīng)用設(shè)計和詳細資料免費下載 13次下載
- ALIENTEK_MINISTM32_實驗11_RTC實時時鐘實驗 17次下載
- STM32F2技術(shù)培訓(xùn)_實時時鐘_RTC 0次下載
- TCXO RTC實時時鐘模塊的特性 132次閱讀
- RTC實時時鐘的基本概念和工作原理 2620次閱讀
- 基于FPGA的RTC實時時鐘系統(tǒng)設(shè)計 1016次閱讀
- 一文看懂RTC實時時鐘 4082次閱讀
- 為實時時鐘選擇備份源 632次閱讀
- 采用Maxim實時時鐘的晶體考慮因素 425次閱讀
- 業(yè)界轉(zhuǎn)向MEMS以獲得精確的實時時鐘 1191次閱讀
- 如何利用Arduino UNO設(shè)計無RTC模塊簡單時鐘 3961次閱讀
- 實時時鐘的硬件結(jié)構(gòu)_實時時鐘故障怎么解決 6891次閱讀
- 微雪電子RTC 時鐘模塊 DS1302簡介 3108次閱讀
- dfrobotI2C DS1307 RTC實時時鐘模塊介紹 4895次閱讀
- STM32單片機中RTC的秒中斷的原理解析 1.4w次閱讀
- 一文看懂rtc實時時鐘和單片機時鐘的區(qū)別 6w次閱讀
- 實時時鐘芯片有哪些_實時時鐘芯片選型介紹 3.9w次閱讀
- 實時時鐘芯片應(yīng)用設(shè)計時必須要考慮的事項 5389次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多