Ⅰ、概述算法
今天總結RTC(Real Time Clock)實時時鐘相關的知識,順帶將BKP簡單總結一下。微信
STM32的RTC模塊和時鐘配置系統(RCC_BDCR寄存器)處於後備區域,即在系統復位或從待機模式喚醒後, RTC的設置和時間維持不變。函數
STM32F0的RTC模塊和F1的RTC模塊最大區別在於F0模塊中有「DATE」和「TIME」寄存器,也就是能夠直接讀取寄存器裏面的值,而F1是秒計數寄存器的值,須要經過相關算法下才能獲得時間的值。學習
本文提供的軟件工程裏面還包含一個BKP模塊,主要是用於掉電保持RTC數值(第一次上電初始化RTC,後面就不用初始化)。例程是在第一次初始化RTC值爲:2016年6月5日 周七 12:00:00(本身可修改)。以後每秒讀取一次,並經過串口打印出來。這裏能夠設置秒中斷,不用軟件等待1秒纔去讀取。測試
本着免費分享的原則,若是你以爲分享的內容對你有用,又想了解更多相關的文章,請用微信搜索「EmbeddDeveloper」 或者掃描下面二維碼、關注,將有更多精彩內容等着你。spa
Ⅱ、下載blog
文章提供的「軟件工程」都是在硬件板子上進行屢次測試、並保證沒問題才上傳至360雲盤,請放心下載測試,若有問題請檢查一下你的板子是否有問題。接口
ST標準外設庫和參考手冊、數據手冊等均可以在ST官網下載,你也能夠到個人360雲盤下載。關於F0系列芯片的參考手冊有多個版本(針對F0不一樣芯片),但有一個通用版本,就是「STM32F0x128參考手冊V8(英文)2015-07」建議參考該手冊,之後若是你換用一種型號芯片也方便了解。事件
今天的軟件工程下載地址(360雲盤):ip
https://yunpan.cn/cSabGUUmvGUiN 訪問密碼 8eee
STM32F0xx的資料能夠在我360雲盤下載:
https://yunpan.cn/cS2PVuHn6X2Bj 訪問密碼 8c37
Ⅲ、準備工做
建議準備F0的參考手冊和數據手冊,方便查閱相關知識,沒有的請到ST官網或到我360雲盤下載。
今天總結的軟件工程是基於「TIM基本延時配置詳細過程」修改而來,所以須要將該軟件工程下載準備好。我每次都是提供整理好的軟件工程供你們下載,可是,若是你是一位學習者,建議本身親手一步一步操做:打開工程 -> 新建文件(rtc.c rtc.h) -> 添加相關文件到工程中 -> 添加源代碼。
Ⅳ、RTC原理
經過RTC時鐘進來分頻以後達到1秒(1Hz),沒相應一次時間更新RTC時鐘寄存器(RTC_TR、RTC_DR),咱們讀取的數字就會更改。若是配置了中斷,相應事件的時候,中斷也會響應。若是配置了鬧鐘,一樣達到了鬧鐘設定的值也會響應鬧鐘。
Ⅴ、代碼描述
①RCC時鐘
該函數位於bsp.c文件下面;
RCC_APB1Periph_PWR時鐘的電源管理的時鐘,RTC屬於後備管理區域。還有一個時鐘就是RTC時鐘,RTC時鐘能夠LSI和LSE,我定義了一個選擇(請看源代碼)。
我我的習慣第一步配置時鐘,ST官方提供的例程也是把配置時鐘放在前面。關於RCC時鐘的配置比較重要,有好幾回我就是因爲忘記配置相應RCC時鐘,讓我找了好久的問題,最後才發現是RCC時鐘沒有配置。
注意:
外設時鐘不要隨便添加,好比:RCC_APB1外設不要配置在RCC_APB2時鐘裏面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);這樣能編譯過,可是錯誤的】
我每次都提醒RCC時鐘,是由於不少人就是由於時鐘而致使軟件運行有問題,因此,提醒更多人要注意配置RCC.
②RTC配置
該函數位於rtc.c文件下面;
注意:
這裏須要定義使用哪個時鐘,我提供工程是使用內部LSI,若是你有LSE外部時鐘,也能夠定義使用外部時鐘。
③RTC初始化配置
該函數位於rtc.c文件下面;
因爲RTC屬於後備區域,爲了方便,這裏同時也使用BKP的功能,就是防止軟件每次復位都初始化時鐘,這裏寫入後備區域BKP一個標誌位,第一次才初始化,後面(只要VBAT, 後備區域有點)都不須要從新初始化了。
④設置RTC時鐘接口函數
該函數位於rtc.c文件下面;
這個函數是我本身封裝的,主要是把日期Date 和 時間Time封裝在一塊兒了,方便一次性操做。
⑤讀RTC時鐘接口函數
該函數位於rtc.c文件下面;
這個函數也是把日期Date 和 時間Time封裝在一塊兒了,方便一次性操做。這種關於結構體的知識建議不會的人嘗試着使用一下結構體,應用結構在C語言中是比較重要的一塊。
Ⅵ、說明
或許你硬件芯片不是提供工程裏面的芯片,可是STM32F0的芯片軟件兼容性很好,能夠適用於F0其餘不少型號的芯片,甚至是F二、F4等芯片上(具體請看手冊、或者親自測試)。
本文章提供的軟件工程是基於ST標準外設庫爲基礎創建而成,而非使用STM32CubeMX創建工程。我的以爲使用ST的標準外設庫適合與學習者,STM32CubeMX創建工程結構複雜,對於學習者,特別是初學者估計會頭疼。
今天的工程是基於工程「STM32F0xx_TIM基本延時配置詳細過程」修改而來,以上實例總結僅供參考,如有不對之處,敬請諒解。
Ⅶ、最後
關注微信,回覆「更多內容」,將得到更多內容(如:UCOS實例等,不斷更新中......)。
若是你喜歡我分享的內容,你又想了解更多相關內容,請關注文章開頭的微信公衆號,新內容持續更新中,後期將會有更多精彩內容出現。