[活动] 【APM32F107VCT6 MINI开发板测评】RTC与电子时钟

[复制链接]
1253|18
 楼主| jinglixixi 发表于 2023-2-15 22:48 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2023-2-16 11:59 编辑

APM32F107所提供RTC与通常有一定的区别,只是一个秒计时器,并没有提供时分秒的寄存器及机制处理,为此在使用RTC时,只好借助于这个秒计时器在配上相应的变量和机制处理机制来实现电子时钟功能。
要实现下图所示的计时效果,需设置3个变量来存储时分秒的值。
uint8_thh=8,mm=30, ss=0;
2.jpg
电子时钟计时效果

实现显示效果的主程序为:
  1. int main(void)
  2. {
  3. APM_MINI_LEDInit(LED2);
  4. RTC_Config();
  5. APM_MINI_OLEDInit();
  6. OLED_Init();
  7. OLED_line();
  8. OLED_ShowString(20,0,"APM32F107",16);
  9. OLED_ShowString(20,2," 8:30:00",16);
  10. OLED_ShowString(20,4,"jinglixixi",16);
  11. while(1)
  12. {
  13.          if(ss==60)
  14.          {
  15.                   ss=0;
  16.                   mm=mm+1;
  17.                   if(mm==60)
  18.                   {
  19.                           hh=(hh+1)%60;
  20.                   }
  21.          }
  22.          OLED_ShowNum(20,2,hh,2,16);
  23.          OLED_ShowNum(44,2,mm,2,16);
  24.          OLED_ShowNum(68,2,ss,2,16);
  25.          Delay_us(100000);
  26. }
  27. }


RTC的配置函数为:
  1. voidRTC_Config(void)
  2. {
  3. RCM_EnableAPB1PeriphClock((RCM_APB1_PERIPH_T)RCM_APB1_PERIPH_PMU);
  4. PMU_EnableBackupAccess();
  5. RCM_EnableLSI();
  6. while(RCM_ReadStatusFlag(RCM_FLAG_LSIRDY) == RESET);
  7. RCM_ConfigRTCCLK(RCM_RTCCLK_LSI);
  8. RCM_EnableRTCCLK();
  9. RTC_WaitForSynchro();
  10. RTC_WaitForLastTask();
  11. RTC_EnableInterrupt(RTC_INT_SEC);
  12. RTC_WaitForLastTask();
  13. RTC_ConfigPrescaler(32767);
  14. RTC_WaitForLastTask();
  15. NVIC_EnableIRQRequest(RTC_IRQn, 0, 0);
  16. }


对于秒计时处理是由RTC的中断处理来完成的,其内容为:
  1. extern uint32_t ss;
  2. voidRTC_IRQHandler(void)
  3. {
  4.     if (RTC_ReadIntFlag(RTC_INT_SEC) != RESET)
  5.     {
  6.         RTC_ClearIntFlag(RTC_INT_SEC);
  7.         APM_MINI_LEDToggle(LED2);
  8.         ss=ss+1;
  9.         RTC_WaitForLastTask();
  10.     }
  11. }


为辅助主程序的时间显示,所配置的数值显示函数为:
  1. voidOLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
  2. {
  3. uint8_tt,temp;
  4. uint8_tenshow=0;
  5. for(t=0;t<len;t++)
  6. {
  7.      temp=(num/oled_pow(10,len-t-1))%10;
  8.      if(enshow==0&&t<(len-1))
  9.      {
  10.             if(temp==0)
  11.             {
  12.                  OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
  13.                  continue;
  14.             }
  15.             elseenshow=1;
  16.         }
  17.         OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
  18.     }
  19. }


这样就利用RTC的秒计时功能实现了电子时钟的计时效果,相对来讲还是比较简便的。

qiufengsd 发表于 2023-3-4 20:41 | 显示全部楼层
RTC能产生毫秒级的中断吗               
updownq 发表于 2023-3-4 21:24 | 显示全部楼层
RTC_SetAlarm可设置的最大值为多少
xiaoyaodz 发表于 2023-3-4 22:09 | 显示全部楼层
APM32芯片自带的RTC和DS1302的实时时钟区别大不大
51xlf 发表于 2023-3-4 22:17 | 显示全部楼层
rtc后备电池掉电很快               
macpherson 发表于 2023-3-5 10:26 | 显示全部楼层
RTC能产生毫秒级的中断吗               
 楼主| jinglixixi 发表于 2023-3-5 10:36 | 显示全部楼层
xiaoyaodz 发表于 2023-3-4 22:09
APM32芯片自带的RTC和DS1302的实时时钟区别大不大

具体的精度需要专业的仪器,若仅是理论上的比较可查看2家的资料。
everyrobin 发表于 2023-3-7 20:02 | 显示全部楼层
APM32F107VCT6 的rtc具有哪些功能
pixhw 发表于 2023-3-7 21:07 | 显示全部楼层
rtc外接纽扣电池电压多少               
 楼主| jinglixixi 发表于 2023-3-8 09:56 | 显示全部楼层
pixhw 发表于 2023-3-7 21:07
rtc外接纽扣电池电压多少

一般是3V
 楼主| jinglixixi 发表于 2023-3-8 09:58 | 显示全部楼层
everyrobin 发表于 2023-3-7 20:02
APM32F107VCT6 的rtc具有哪些功能

感觉只是秒计时,似乎没有日历功能。
burgessmaggie 发表于 2023-3-9 12:40 | 显示全部楼层
rtc用电阻分压供电可以吗               
 楼主| jinglixixi 发表于 2023-3-10 00:10 | 显示全部楼层
burgessmaggie 发表于 2023-3-9 12:40
rtc用电阻分压供电可以吗

它是直接用的板子上3.3V电源
minzisc 发表于 2023-3-10 11:25 | 显示全部楼层
APM32芯片自带的RTC和DS1302的实时时钟区别大不大
jackcat 发表于 2023-3-10 12:55 | 显示全部楼层
RTC_SetAlarm可设置的最大值为多少
hearstnorman323 发表于 2023-3-10 17:11 | 显示全部楼层
rtc后备电池掉电很快               
 楼主| jinglixixi 发表于 2023-3-10 21:59 | 显示全部楼层
minzisc 发表于 2023-3-10 11:25
APM32芯片自带的RTC和DS1302的实时时钟区别大不大

没测试过,应该不大。
 楼主| jinglixixi 发表于 2023-3-10 21:59 | 显示全部楼层
hearstnorman323 发表于 2023-3-10 17:11
rtc后备电池掉电很快

说明功耗比较大
 楼主| jinglixixi 发表于 2023-3-10 22:00 | 显示全部楼层
jackcat 发表于 2023-3-10 12:55
RTC_SetAlarm可设置的最大值为多少

看一下数据类型可以知道个大概
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部