打印
[开发板与模块]

【ESK32-30519 + ESK32-21001测评】+RTC电子时钟

[复制链接]
2185|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 eltonchang2001 于 2022-11-9 13:59 编辑

在ESK32-30519 开发板上配置有RTC,将它与数码管相结合可构成电子时钟,其形式如图1所示。
图1 电子时钟 对于RTC 的例程,它是提供时间设置功能的,并由串口来输入,其内容如下:
u32 Time_Regulate(void)
{
  u32 Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF;
  printf("\r\n==============Time Settings=====================================");
  printf("\r\n  Please Set Hours");
  printf("\r\n");
  do
  {
    Tmp_HH = ScanUnsignedDecimal();
  } while (Tmp_HH> 23);
  printf(":  %u", (unsigned int)Tmp_HH);
  printf("\r\n  Please Set Minutes");
  printf("\r\n");
  do
  {
    Tmp_MM = ScanUnsignedDecimal();
  } while (Tmp_MM> 59);
  printf(":  %u", (unsigned int)Tmp_MM);
  printf("\r\n  Please Set Seconds");
  printf("\r\n");
  do
  {
    Tmp_SS = ScanUnsignedDecimal();
  } while (Tmp_SS> 59);
  printf(":  %u", (unsigned int)Tmp_SS);
  return((Tmp_HH * 3600 + Tmp_MM * 60 + Tmp_SS));
}

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

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

  HT32F_DVB_LEDInit(HT_LED1);
  RETARGET_Configuration();
  GPIO_Configuration();
  LEDC_Configuration();
  NVIC_EnableIRQ(RTC_IRQn);
  RTC_Configuration();
  printf("\r\n RTC configured....");
  TimeReg = Time_Regulate();
  RTC_Cmd(ENABLE);
  printf("\r\n");
  while (1)
  {
    if (gwTimeDisplay == 1)
    {
      Time_Display(RTC_GetCounter() + TimeReg);
      gwTimeDisplay = 0;
    }
  }
}

对应的RTC显示函数为:
void Time_Display(u32 wTimeVar)
{
  u32 THH = 0, TMM = 0, TSS = 0;
  unsigned int m,s;
  wTimeVar %= 86400;
  THH = wTimeVar/3600;
  TMM = (wTimeVar % 3600)/60;
  TSS = (wTimeVar % 3600)% 60;
  m=TMM;
  s=TSS;
  LEDC_SetData(HTCFG_LEDC_COM_D1,  NumberChar[m/10]);
  LEDC_SetData(HTCFG_LEDC_COM_D2,  NumberChar[m%10]|0x02);
  LEDC_SetData(HTCFG_LEDC_COM_D3,  NumberChar[s/10]);
  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的精确度               

使用特权

评论回复
5
updownq| | 2022-10-1 13:22 | 只看该作者
rtc外部晶振配置代码              

使用特权

评论回复
6
pixhw| | 2022-10-1 13:43 | 只看该作者
必须用外部的晶振吗               

使用特权

评论回复
7
backlugin| | 2022-10-1 14:18 | 只看该作者
RTC 使用晶振是不是有很严格的要求

使用特权

评论回复
8
saservice| | 2022-10-1 14:58 | 只看该作者
定时器用来得到RTC时钟吗               

使用特权

评论回复
9
pmp| | 2022-10-1 15:50 | 只看该作者
为什么实时时钟的晶振都是32.768KHZ

使用特权

评论回复
10
jinglixixi|  楼主 | 2022-10-2 17:02 | 只看该作者
pixhw 发表于 2022-10-1 13:43
必须用外部的晶振吗

配置合适的晶振有利于精准度。

使用特权

评论回复
11
jinglixixi|  楼主 | 2022-10-2 17:03 | 只看该作者
backlugin 发表于 2022-10-1 14:18
RTC 使用晶振是不是有很严格的要求

通常是使用32KH晶振

使用特权

评论回复
12
jinglixixi|  楼主 | 2022-10-2 17:05 | 只看该作者
saservice 发表于 2022-10-1 14:58
定时器用来得到RTC时钟吗

RTC通常是一个专用的定时器,以确保RTC功能。

使用特权

评论回复
13
jinglixixi|  楼主 | 2022-10-2 17:06 | 只看该作者
pmp 发表于 2022-10-1 15:50
为什么实时时钟的晶振都是32.768KHZ

应该是便于分频来达到基准计时吧

使用特权

评论回复
14
Henryko| | 2022-10-4 19:52 | 只看该作者
必须要外部晶振吗

使用特权

评论回复
15
jinglixixi|  楼主 | 2022-10-5 09:02 | 只看该作者
Henryko 发表于 2022-10-4 19:52
必须要外部晶振吗

一般是

使用特权

评论回复
16
iyoum| | 2022-10-5 17:16 | 只看该作者
定时器用来得到RTC时钟,精度达得到吗

使用特权

评论回复
17
weifeng90| | 2022-10-5 17:18 | 只看该作者
这个开发板配置有点高啊!

使用特权

评论回复
18
yorkbarney| | 2022-10-5 18:23 | 只看该作者
自带的RTC和DS1302的实时时钟区别大不大

使用特权

评论回复
19
uytyu| | 2022-10-5 20:11 | 只看该作者
rtc时钟 多久设置一次合适              

使用特权

评论回复
20
jinglixixi|  楼主 | 2022-10-6 08:59 | 只看该作者
iyoum 发表于 2022-10-5 17:16
定时器用来得到RTC时钟,精度达得到吗

可能差不都,但会麻烦些。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝