RTC(real-time clock)也就我們?nèi)粘?吹降臅r鐘,STM32內(nèi)部專門使用了一組32位計數(shù)器,通過軟件的方式編寫出當前的時間和日期。
首先我們從圖中可以看出RTC的時鐘來源有三個:
(1)是高速外部時鐘HSE除以128
(2)是內(nèi)部低速時鐘LSI,通常為40kHZ,但是精度不是很高
(3)是外部低速時鐘LSE,通常選用32.768KHZ的晶振
軟件的編程的流程圖如圖所示:
(1)串口1的時鐘/GPIO端口的配置,自己調(diào)用前面封裝的文件
(2)檢測備份寄存器BKP的DR1的值是不是0XA5A5,這個值是可以人為設(shè)置的,只有和后面設(shè)置的值一樣就可以了。備份寄存器BKP有點像EEPROM,掉電不消失。
(3)如果不是這個值,表明RTC沒有配置,需要進行配置。
(4)首先使能對RTC寄存器的訪問。由于系統(tǒng)復(fù)位后,RTC的訪問是禁止的。這部分的需要使能BKP和PWR時鐘,因為RTC的配置在這里。
(5)使能LSE外部低速時鐘作為RTC時鐘
(6)等待時鐘寄存器的同步
(7)設(shè)置分配系數(shù)為32767,這樣時鐘就降到1HZ
(8)等待串口輸入當前的時鐘
(9)寫入BKP寄存器DR1的值為0XA5A5
(10)如果第2步的值相同,只需使能RTC秒中斷
整個程序采用的秒中斷輸出當前的時間。程序有個缺點,就是不能配置后不能調(diào)整時間了。下次看看能解決這個問題嗎。