[ STM32F4-discovery开发板测评 ] 电子时钟
[复制链接]
对于STM32F4-discovery开发板来讲,它内置了RTC计时器并提供了一些RTC的功能函数,它并没有一个完整使用示例,因此不便快速加以利用。
本打算实现一个RTC电子时钟,限于时间关系就不在这方面浪费时间了,直接利用延时函数与LCD屏就可快速地搭建一个电子时钟,其显示效果如图1所示。
图1 电子时钟
关于LCD屏的显示驱动在前面的测评中已做过介绍,就不再细说,这里只补充一个数值显示函数以支持时间的显示。
相应的数值显示函数为:
void LCD_ShowNum(u16 x,u16 y,u16 num,u8 len,u16 color)
{
u8 t,temp;
u8 enshow=0;
for(t=0;t<len;t++)
{
temp=(num/mypow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
LCD_ShowChar(x+8*t,y,' ',0,color);
continue;
}
else enshow=1;
}
LCD_ShowChar(x+8*t,y,temp+48,0,color);
}
}
由于是利用延时函数进行计时,因此要添加相应的计时变量及进制处理,相应的主程序为:
int main(void)
{
char ss=0,sm=58,sh=23;
SystemClock_Config();
lcd_gpio();
Lcd_Init();
BACK_COLOR=RED;
LCD_Clear(RED);
LCD_ShowString(20,25," : : ",YELLOW);
while (1)
{
LCD_ShowNum(68,25,ss,2,YELLOW);
LCD_ShowNum(44,25,sm,2,YELLOW);
LCD_ShowNum(20,25,sh,2,YELLOW);
ss=ss+1;
if(ss==60)
{
ss=0;
sm=sm+1;
}
if(sm==60)
{
sm=0;
sh=(sh+1)%24;
}
HAL_Delay(1000);
}
}
经程序的编译和下载,其测试效果如图2和图3所示,说明它可以完成计时的进制变化要求是可以完成计时要求的。其不足是在断电情况下,无法再继续保存计时值。优点是程序简单,在24小时内的计时累计误差不会过大。
图2 边界测试1
图3 边界测试2
|