打印
[研电赛技术支持]

GD32F350CBT6 RTC以两倍速度运行怎么回事?

[复制链接]
3391|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ypp240124016|  楼主 | 2021-7-5 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rtc, RTC, rc, ni, ck, se

/*               
================================================================================
描述 :RTC初始化
输入 :
输出 :
================================================================================
*/
void drv_rtc_init(void)
{
#ifdef        USE_RTC       

__IO uint32_t prescaler_a = 0, prescaler_s = 0;       

  rcu_periph_clock_enable(RCU_PMU);
  pmu_backup_write_enable();

  #if defined (RTC_CLOCK_SOURCE_IRC40K)
    rcu_osci_on(RCU_IRC40K);
    rcu_osci_stab_wait(RCU_IRC40K);
    rcu_rtc_clock_config(RCU_RTCSRC_IRC40K);

    prescaler_s = 0x18F;
    prescaler_a = 0x63;
  #elif defined (RTC_CLOCK_SOURCE_LXTAL)
    rcu_osci_on(RCU_LXTAL);
    rcu_osci_stab_wait(RCU_LXTAL);
    rcu_rtc_clock_config(RCU_RTCSRC_LXTAL);
    prescaler_s = 0xFF;
    prescaler_a = 0x7F;
  #else
    #error RTC clock source should be defined.
  #endif /* RTC_CLOCK_SOURCE_IRC40K */
  rcu_periph_clock_enable(RCU_RTC);
  rtc_register_sync_wait();

  if(BKP_VALUE != RTC_BKP0)
  {
    rtc_parameter_struct rtc_initpara;
    rtc_initpara.rtc_factor_asyn = prescaler_a;
    rtc_initpara.rtc_factor_syn = prescaler_s;
    rtc_initpara.rtc_year = 0x16;
    rtc_initpara.rtc_day_of_week = RTC_SATURDAY;
    rtc_initpara.rtc_month = RTC_APR;
    rtc_initpara.rtc_date = 0x30;
    rtc_initpara.rtc_display_format = RTC_24HOUR;
    rtc_initpara.rtc_am_pm = RTC_AM;   

    rtc_initpara.rtc_hour = 0;
    rtc_initpara.rtc_minute = 0;
    rtc_initpara.rtc_second = 0;
    if(ERROR == rtc_init(&rtc_initpara))
    {   
      printf("\n\r** RTC time configuration failed! **\n\r");
    }
    else
    {
      printf("\n\r** RTC time configuration success! **\n\r");
      RTC_BKP0 = BKP_VALUE;
    }      
  }
        else
        {

                printf("RTC continue!\n");
        }  
#endif       
}


以上是初始化代码,我设置了一个时间后,然后每隔5S打印一次获取到的RTC时间,发现RTC时间的间隔是10S,也就是以正常两倍的速度在运行。
以下是串口打印输出的内容。
[15:02:26.941] app sec counter=175s
[15:02:26.941] hour=12, min=55, sec=24
[15:02:26.941] ***2021-07-05 12:55:24
[15:02:26.941] rtc_time=1625460924s
[15:02:26.947]
[15:02:31.940] app sec counter=180s
[15:02:31.950] hour=12, min=55, sec=34
[15:02:31.950] ***2021-07-05 12:55:34

[15:02:31.950] rtc_time=1625460934s





使用特权

评论回复
沙发
sonicll| | 2021-7-5 16:17 | 只看该作者
你RTC的时钟源用的是IRC40K还是LXTAL?如果用的是LXTAL,频率准吗,是32.768K吗?

使用特权

评论回复
板凳
ypp240124016|  楼主 | 2021-7-5 16:28 | 只看该作者
sonicll 发表于 2021-7-5 16:17
你RTC的时钟源用的是IRC40K还是LXTAL?如果用的是LXTAL,频率准吗,是32.768K吗? ...

内外两种都试过了 效果一样,外部晶振是32.768K的

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝