STM32 的實時時鐘(Real-Time Clock,簡稱RTC)是一個獨立的定時器。 STM32 的 RTC 模塊擁有一組連續計數
的計數器,在相應軟件配置下,可提供時鐘日曆的功能。修改計數器的值可以重新設置系統當前的時間和日期。
在RTC實驗中,我們在正點原子的例程中使用到的顯示數字的函數爲 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size),這個函數前兩個參數是顯示數字的座標;第三個參數是要顯示的數字爲32位的,所以最大能顯示2^(32-1);第四個參數是數字的位數,比如2018,則len=4;第五個參數是字體大小12/16/24.如果我們使用這個函數來顯示我們想要的日期,LCD顯示出來的效果如圖1所示:
圖1
這裏我們可以看到,當月份或者某一天某一時分秒的數小於10時,我們只能看到LCD對應的數字,空了一小格本來是0,卻沒有添加上去,覺着看着很不爽。我也是想了很久,覺得應該是需要重新寫一下這個函數,但是我們打開LCD.C文件仔細再看看一些裏面的功能函數嗎,就可以看到,其中有這樣一個函數 void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode),這個函數的參數前面五個我就我繼續解釋了,因爲和前面 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)差不多,在這裏就多了一個參數 u8 mode.這裏在函數上面的註釋有這樣幾排解釋
//[7]:0,不填充;1,填充0.
//[6:1]:保留
//[0]:0,非疊加顯示;1,疊加顯示.
我們看到這個mode被定義是一個八位的數,也就是從0~1111 1111,第1位到第6位不管,第7位爲1則會在不足兩位數的數錢自動加0,而如果第七位爲0,則不會,效果同函數 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)一樣,如圖1所示,如果我們將第七位改爲0則會出現如圖2所示的效果,比如mode=0x80.