Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)

RTC時鐘實驗

常見的手機、智慧手錶、計算機上都有日曆、鬧鐘、待機以及喚醒功能,這些功能的實現利益於電子晶片中的RTC實時時鐘電路和相應的後備域暫存器。即即使在系統掉電的情況下,只需要一顆小小的鈕釦電池與低速振盪器(LSI)就可以維持RTC的工作。

對於很多電子產品,如果較長時間地不進行任何操作,為了降低系統功耗,經常需要將其待機,等滿足一定條件(如鬧鐘事件、外部觸發事件)的時候再將其喚醒重新工作。

STM內部的RTC時鐘是一個完全獨立於MCU的32位計數器,因此,可以最大計數2的32次方秒鐘,約136年。

RTC內部工作示意圖

下圖所示的陰影部分為STM32的後備域,重啟或復位MCU,都不能直接操作後備域的暫存器,必須手動取消後備域的防寫才能操作。

這個後德域包含了兩個最重要的暫存器:20位的RTC預分頻器和32位的RTC可程式設計計數器。預分頻器通常設定為32767,這樣在外部低速振盪器頻率為32。768KHz就可以產生準確的秒脈衝:32767+1)/32。768KHz,該脈衝驅動RTC計數器進行計數,同時產生一個秒中斷事件。

Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)

本次實驗將編寫一個RTC時鐘演示程式,類似於我們日常使用的電子錶,模擬在開發板斷電的情況下時鐘依然能夠正常計時。

實驗預期效果:啟動程式後,可以看到LCD上顯示當前日期和時間,按下開發板上的復位鍵或者斷電再重啟,時間會自動補回,不會變慢了,持續進行計數。

程式編寫

STM32F4系列的RTC不需要中斷就可以工作,所以只需要編寫一個主VI就可以。

一,主VI,配置RTC時鐘暫存器一般步驟

1,確認RTC是否配置過

當返回值為1時,表明RTC之前已經正確設定過,並且處於正常工作狀態;當返回值為0時,表示RTC重啟過尚未設定(通常是紐扣電池沒電或LSI沒起振),就進行第2、3步

2,RTC重新初始化

開啟後備域時鐘、初始化外部低速振盪器、配置後備域相關暫存器

3,RTC更新時間

重置日期和時間,年份的範圍:1970~2106。

4,獲取當前日期和時間

Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)

二,將日期和時間在LCD上顯示出來

LCD初始化;日期顯示;時間顯示;符號: -顯示。

Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)

4,RTC更新時間

重置日期和時間,年份的範圍:1970~2106。

5,RTC時鐘使能(這個必須先開)

三,編譯下載

LCD上實時顯示的效果

Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)

Labview實驗二十一:RTC實驗(電子鐘和日曆顯示)