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