本帖最后由 jinglixixi_457498010 于 2024-1-6 16:35 编辑

MM32F5333内置了RTC计时器并提供了相应的例程,为此极为便于用户的学习和利用。
通过例程,在配有串口系统模块的情况下,可得到图1所示的RTC计时效果。
image.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所示。
    image.png
    图2计时效果1

    image.png
    图3 计时效果2

    image.png
    图4 计时效果3

    可见以RTC计时器来实现电子时钟功能是很方便的,若配合板载蜂鸣器的使用还可实现电子闹钟的功效。