RTC: Real time clock
相比較而言,STM32F407的RTC比STM32F1的更加容易配置。當然,F(xiàn)4的資源相對也就更加豐富很多了。具體的資源可查看官方參考手冊,通過下面的圖表也可以了解其大致功能
1、開始的時候?qū)τ?ALRAM A/B的功能沒有怎么理解,后面再來看時發(fā)現(xiàn)其很簡單,舉個簡單的例子,就比如,定的鬧鐘,當然,這個也是可以實現(xiàn)鬧鐘的功能。只是通過這個簡單的例子來說明,ALARM A/B的用途或者功能吧
2、自動喚醒與時間戳及時間篡改事件,與1的差不多,細細體會就知道
3、RTC_AFO 與 RTC_AFI 就是對外輸出及檢測外部時間事件
4、 RTC的時鐘源一般情況下,是使用LSE ,通過適當?shù)姆诸l產(chǎn)生一個1HZ的時鐘,分頻中有2個關(guān)鍵點,就是 異步分頻因子(7bit)和同步分頻因子(15bit),兩者配置會影響功耗,官方建議配置異步分頻因子為較高值,以減少功耗,這里采用最大值配置方式:SynchPrediv = 0xFF; AsynchPrediv = 0x7F;這樣時鐘就配置OK了
5、下面看一下RTC的初始化和配置,個人認為只要這里搞懂了,RTC也就懂了,至于自動喚醒、ALARM等都是很容易配置,更何況ST庫函數(shù)已經(jīng)寫好了,直接調(diào)用相關(guān)函數(shù)就可。
1) 首先要知道 RTC的寄存器是具有寫保護功能的,因此在每次對其進行寫操作前,就要先退出寫保護,這里很直白的告訴我們,就是依照這個順序操作,分別對RTC_WPR 寫入 0xCA 和 0x53 就可解除寫保護,注意順序不可變。其下,還有一句話,寫一個錯鍵重新激活寫保護,就是隨便寫一個與上面2個不同的,就可再次激活寫保護功能
6、 對于具體如何設(shè)置具體值就不講了,官方庫中 RTC_SetTime() /RTC_SetDate() 等函數(shù)可以很容易的實現(xiàn)。
7、最后將一下 RTC的備份寄存器 ,備份寄存器的作用顧名思義就是備份,其總共有20個相關(guān)寄存器,舉一個簡單的例子就可以明白其作用,比如我們要初始化設(shè)置RTC的相關(guān)值,第一次的時候我設(shè)置了一次,當我復(fù)位MCU,RTC還在正常運行,我并不需要重新設(shè)置RTC,這時候,我們可以在要設(shè)置RTC的時候,添加一個判斷條件,就是如果我選擇的備份寄存器中填入一個值,如果我獨到的值和我要寫的值一致,我就不重新設(shè)置RTC,如果不一致我就重新設(shè)置。當然這個值是隨意設(shè)置的。
如官方例程: if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x32F2) //判讀讀到的值是否與設(shè)置的一致
{
。。。。
RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2); //設(shè)置完成后,給備份寄存器寫入一個值
}
8、至此,介紹就結(jié)束了,主要還是看參考手冊,當然,官方的庫已經(jīng)給大家省去了很多功能,但是從寄存器層面去了解如何操作的也是相當?shù)谋匾?/p>