STM32实时时钟实验中,怎样在小于10的数字前加零

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所示:

STM32实时时钟实验中,怎样在小于10的数字前加零_第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.

STM32实时时钟实验中,怎样在小于10的数字前加零_第2张图片


你可能感兴趣的:(stm32)