分享

【新提醒】HC32F030开发板所实现的电子时钟

 东华知识库 2021-01-06
HC32F030HC32L136不同,它自身没有内置硬件的万年历 RTC,要想实现与RTC类似的功能只能借助于systick,利用秒信号来进行计时,并通过程序来完成时间的进制转换。
实现电子时钟功能的主程序如下:
  1. int32_t main(void)
  2. {
  3. stc_gpio_config_t stcGpioCfg;
  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  5. delay1ms(500);
  6. App_OledInit();        
  7. OLED_VCC();
  8. OLED_GND();
  9. OLED_Init();
  10. OLED_Clear();
  11. OLED_ShowString(0,0,"HC32F030 TEST",16);
  12. OLED_ShowString(0,2,"OLED DISPLAY",16);
  13. OLED_ShowCHinese(0, 4, 0);
  14. OLED_ShowCHinese(16, 4, 1);
  15. OLED_ShowCHinese(32, 4, 2);
  16. OLED_ShowCHinese(48, 4, 3);
  17. OLED_ShowCHinese(64, 4, 4);
  18. OLED_ShowString(0,6,"   :  :",16);
  19. stcGpioCfg.enDir = GpioDirOut;
  20. stcGpioCfg.enDrv = GpioDrvH;
  21. stcGpioCfg.enPuPd = GpioPd;
  22. stcGpioCfg.enOD = GpioOdDisable;
  23. Gpio_Init(GpioPortD, GpioPin5, &stcGpioCfg);
  24. SysTick_Config(SystemCoreClock);
  25. while (1)
  26. {
  27. OLED_ShowNum(8,6,hh,2,16);
  28. OLED_ShowNum(32,6,mm,2,16);
  29. OLED_ShowNum(56,6,ss,2,16);
  30. }
  31. }
复制代码

显示计时的处理函数为:
  1. void SysTick_Handler(void)
  2. {
  3. static uint8_t u8Flag = TRUE;
  4. Gpio_WriteOutputIO(GpioPortD, GpioPin5, u8Flag);
  5. ss++;
  6. if(ss==60)
  7. {
  8. mm++;
  9. ss=0;
  10. }
  11. if(mm==60)
  12. {
  13. hh++;
  14. mm=0;
  15. }
  16. if(hh==24)
  17. {
  18. hh=0;
  19. }
  20. u8Flag = !u8Flag;
  21. }
复制代码
程序下载后,其运行效果如图1和图2所示。

1  计时效果1

2计时效果2
工程文件:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多