MM32F5333内置了RTC计时器并提供了相应的例程,为此极为便于用户的学习和利用。
通过例程,在配有串口系统模块的情况下,可得到图1所示的RTC计时效果。
![image.png image.png](data/attachment/forum/202401/06/162721n4da29axtbpat4zz.png)
图1计时效果
结合前面介绍的OLED屏,可以快速地实现电子时钟的显示功能。使用使用OLED屏显示数值的函数为:
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
{
uint8_t t,temp;
uint8_t enshow=0;
for(t=0;t<len;t++)
{
temp=(num/oled_pow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
continue;
}
else enshow=1;
}
OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
}
}
复制代码实现RTC计时值显示的函数为:
voidRTC_PrintDateTime(void)复制代码
{
OLED_ShowNum(20,5,RTC_Calendar.hour,2,16);
OLED_ShowNum(44,5,RTC_Calendar.minute,2,16);
OLED_ShowNum(68,5,RTC_Calendar.second,2,16);
} 显示电子时钟显示功能功能的主程序为:
int main(void)复制代码
{
PLATFORM_Init();
GPIO_OLED();
Init_OLED();
OLED_Clear();
OLED_ShowString(20,0,"MM32F5333 ",16);
OLED_ShowString(20,2,"OLED TEST",16);
OLED_ShowString(20,5," : :",16);
RTC_Calendar_Sample();
while (1);
}
经程序的编译和下载,其计时效果如图2至图4所示。
图2计时效果1
图3 计时效果2
图4 计时效果3
可见以RTC计时器来实现电子时钟功能是很方便的,若配合板载蜂鸣器的使用还可实现电子闹钟的功效。