[开发板与模块] 【ESK32-30519 + ESK32-21001测评】+RTC电子时钟

[复制链接]
 楼主| jinglixixi 发表于 2022-9-23 18:24 | 显示全部楼层 |阅读模式
<
本帖最后由 eltonchang2001 于 2022-11-9 13:59 编辑

在ESK32-30519 开发板上配置有RTC,将它与数码管相结合可构成电子时钟,其形式如图1所示。
1.jpg
图1 电子时钟 对于RTC 的例程,它是提供时间设置功能的,并由串口来输入,其内容如下:
  1. u32 Time_Regulate(void)
  2. {
  3.   u32 Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF;
  4.   printf("\r\n==============Time Settings=====================================");
  5.   printf("\r\n  Please Set Hours");
  6.   printf("\r\n");
  7.   do
  8.   {
  9.     Tmp_HH = ScanUnsignedDecimal();
  10.   } while (Tmp_HH> 23);
  11.   printf(":  %u", (unsigned int)Tmp_HH);
  12.   printf("\r\n  Please Set Minutes");
  13.   printf("\r\n");
  14.   do
  15.   {
  16.     Tmp_MM = ScanUnsignedDecimal();
  17.   } while (Tmp_MM> 59);
  18.   printf(":  %u", (unsigned int)Tmp_MM);
  19.   printf("\r\n  Please Set Seconds");
  20.   printf("\r\n");
  21.   do
  22.   {
  23.     Tmp_SS = ScanUnsignedDecimal();
  24.   } while (Tmp_SS> 59);
  25.   printf(":  %u", (unsigned int)Tmp_SS);
  26.   return((Tmp_HH * 3600 + Tmp_MM * 60 + Tmp_SS));
  27. }

其时间的输入发送如图2所示,值得指出的是在输入数值后,需要以一个数字符号外字符来作为结束符。但不能使用回车符,否则会出现参数遗失的现象。
2.jpg 2 时间设置及运行效果 当然,为了省去参数输入的麻烦,也可以通过修改函数Time_Regulate()以指定值来设置RTC初始值。修改后的函数Time_Regulate()其形式如下:
  1. u32 Time_Regulate(void)
  2. {
  3.   u32 Tmp_HH = 0x18, Tmp_MM = 0x30, Tmp_SS = 0x00;
  4.   return((Tmp_HH * 3600 + Tmp_MM * 60 + Tmp_SS));
  5. }

其中参数Tmp_HH、Tmp_MM和Tmp_SS分别为设置的时、分、秒的值。配置数码管显示函数后,实现电子时钟功能的主程序为:
  1. int main(void)
  2. {
  3.   CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
  4.   CKCUClock.Bit.BKP        = 1;
  5.   CKCU_PeripClockConfig(CKCUClock, ENABLE);
  6.   #if (!LIBCFG_NO_PWRCU_TEST_REG)
  7.   if (PWRCU_CheckReadyAccessed() != PWRCU_OK)
  8.   {
  9.     while (1);
  10.   }
  11.   #endif

  12.   HT32F_DVB_LEDInit(HT_LED1);
  13.   RETARGET_Configuration();
  14.   GPIO_Configuration();
  15.   LEDC_Configuration();
  16.   NVIC_EnableIRQ(RTC_IRQn);
  17.   RTC_Configuration();
  18.   printf("\r\n RTC configured....");
  19.   TimeReg = Time_Regulate();
  20.   RTC_Cmd(ENABLE);
  21.   printf("\r\n");
  22.   while (1)
  23.   {
  24.     if (gwTimeDisplay == 1)
  25.     {
  26.       Time_Display(RTC_GetCounter() + TimeReg);
  27.       gwTimeDisplay = 0;
  28.     }
  29.   }
  30. }

对应的RTC显示函数为:
  1. void Time_Display(u32 wTimeVar)
  2. {
  3.   u32 THH = 0, TMM = 0, TSS = 0;
  4.   unsigned int m,s;
  5.   wTimeVar %= 86400;
  6.   THH = wTimeVar/3600;
  7.   TMM = (wTimeVar % 3600)/60;
  8.   TSS = (wTimeVar % 3600)% 60;
  9.   m=TMM;
  10.   s=TSS;
  11.   LEDC_SetData(HTCFG_LEDC_COM_D1,  NumberChar[m/10]);
  12.   LEDC_SetData(HTCFG_LEDC_COM_D2,  NumberChar[m%10]|0x02);
  13.   LEDC_SetData(HTCFG_LEDC_COM_D3,  NumberChar[s/10]);
  14.   LEDC_SetData(HTCFG_LEDC_COM_D4,  NumberChar[s%10]);




eltonchang2001 发表于 2022-9-26 10:53 | 显示全部楼层
软件包的例程提供的是RTC时钟,输出到串口
楼主将它改成由数码管输出显示,这样更直觉了
若是由LCD显示屏出显示,其实也不错
 楼主| jinglixixi 发表于 2022-9-26 11:04 | 显示全部楼层
eltonchang2001 发表于 2022-9-26 10:53
软件包的例程提供的是RTC时钟,输出到串口
楼主将它改成由数码管输出显示,这样更直觉了
若是由LCD显示屏出 ...

哦,后面有时间做一下。
i1mcu 发表于 2022-10-1 13:02 | 显示全部楼层
怎么修正RTC的精确度               
updownq 发表于 2022-10-1 13:22 | 显示全部楼层
rtc外部晶振配置代码              
pixhw 发表于 2022-10-1 13:43 | 显示全部楼层
必须用外部的晶振吗               
backlugin 发表于 2022-10-1 14:18 | 显示全部楼层
RTC 使用晶振是不是有很严格的要求
saservice 发表于 2022-10-1 14:58 | 显示全部楼层
定时器用来得到RTC时钟吗               
pmp 发表于 2022-10-1 15:50 | 显示全部楼层
为什么实时时钟的晶振都是32.768KHZ
 楼主| jinglixixi 发表于 2022-10-2 17:02 | 显示全部楼层
pixhw 发表于 2022-10-1 13:43
必须用外部的晶振吗

配置合适的晶振有利于精准度。
 楼主| jinglixixi 发表于 2022-10-2 17:03 | 显示全部楼层
backlugin 发表于 2022-10-1 14:18
RTC 使用晶振是不是有很严格的要求

通常是使用32KH晶振
 楼主| jinglixixi 发表于 2022-10-2 17:05 | 显示全部楼层
saservice 发表于 2022-10-1 14:58
定时器用来得到RTC时钟吗

RTC通常是一个专用的定时器,以确保RTC功能。
 楼主| jinglixixi 发表于 2022-10-2 17:06 | 显示全部楼层
pmp 发表于 2022-10-1 15:50
为什么实时时钟的晶振都是32.768KHZ

应该是便于分频来达到基准计时吧
Henryko 发表于 2022-10-4 19:52 | 显示全部楼层
必须要外部晶振吗
 楼主| jinglixixi 发表于 2022-10-5 09:02 | 显示全部楼层
Henryko 发表于 2022-10-4 19:52
必须要外部晶振吗

一般是
iyoum 发表于 2022-10-5 17:16 | 显示全部楼层
定时器用来得到RTC时钟,精度达得到吗
weifeng90 发表于 2022-10-5 17:18 来自手机 | 显示全部楼层
这个开发板配置有点高啊!
yorkbarney 发表于 2022-10-5 18:23 | 显示全部楼层
自带的RTC和DS1302的实时时钟区别大不大
uytyu 发表于 2022-10-5 20:11 | 显示全部楼层
rtc时钟 多久设置一次合适              
 楼主| jinglixixi 发表于 2022-10-6 08:59 | 显示全部楼层
iyoum 发表于 2022-10-5 17:16
定时器用来得到RTC时钟,精度达得到吗

可能差不都,但会麻烦些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

517

主题

2932

帖子

39

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