STM32F0xx_RTC實時時鐘配置詳細過程

、概述算法

今天總結RTC(Real Time Clock)實時時鐘相關的知識,順帶將BKP簡單總結一下。微信

STM32RTC模塊和時鐘配置系統(RCC_BDCR寄存器)處於後備區域,即在系統復位或從待機模式喚醒後, RTC的設置和時間維持不變。函數

STM32F0RTC模塊和F1RTC模塊最大區別在於F0模塊中有「DATE」和「TIME」寄存器,也就是能夠直接讀取寄存器裏面的值,而F1是秒計數寄存器的值,須要經過相關算法下才能獲得時間的值。學習

本文提供的軟件工程裏面還包含一個BKP模塊,主要是用於掉電保持RTC數值(第一次上電初始化RTC,後面就不用初始化)。例程是在第一次初始化RTC值爲:201665日 周七 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實例等,不斷更新中......)。

若是你喜歡我分享的內容,你又想了解更多相關內容,請關注文章開頭的微信公衆號,新內容持續更新中,後期將會有更多精彩內容出現。

 

閱讀原文

相關文章
相關標籤/搜索