打印

GD32E230C8 RTC 使用外部晶振不走时,要怎么配置呢?

[复制链接]
1126|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lang30|  楼主 | 2021-12-28 00:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lang30 于 2021-12-28 00:37 编辑

换成IRC40K 就能走时;还需要配置哪里呢?
<div class="blockcode"><blockquote>// #define RTC_CLOCK_SOURCE_IRC40K
#define RTC_CLOCK_SOURCE_LXTAL
void rtc_pre_config(void)
{
    /* enable access to RTC registers in backup domain */
    rcu_periph_clock_enable(RCU_PMU);
    pmu_backup_write_enable();

    #if defined (RTC_CLOCK_SOURCE_IRC40K)   
          /* enable the IRC40K oscillator */
          rcu_osci_on(RCU_IRC40K);
          /* wait till IRC40K is ready */
          rcu_osci_stab_wait(RCU_IRC40K);
          /* select the RTC clock source */
          rcu_rtc_clock_config(RCU_RTCSRC_IRC40K);
  
          prescaler_s = 0x18F;
          prescaler_a = 0x63;
    #elif defined (RTC_CLOCK_SOURCE_LXTAL)
           /* enable the IRC40K oscillator */
          rcu_osci_on(RCU_LXTAL);
          /* wait till IRC40K is ready */
          rcu_osci_stab_wait(RCU_LXTAL);
          /* select the RTC clock source */
          rcu_rtc_clock_config(RCU_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();
}

使用特权

评论回复
沙发
QQ2224043166| | 2021-12-31 09:41 | 只看该作者
void RTC_Set( tm* t )
{
  rtc_parameter_struct   rtc_initpara;        
  
  /* setup RTC time value */
  rtc_initpara.factor_asyn = prescaler_a;
  rtc_initpara.factor_syn  = prescaler_s;
  rtc_initpara.year = RTC_ByteToBcd2(t->year - 2000);
  rtc_initpara.day_of_week = RTC_ByteToBcd2(t->week);
  rtc_initpara.month = RTC_ByteToBcd2(t->mon);
  rtc_initpara.date  = RTC_ByteToBcd2(t->day);
  rtc_initpara.display_format = RTC_24HOUR;        
  
  rtc_initpara.hour   = RTC_ByteToBcd2(t->hour);
  rtc_initpara.am_pm  = (t->hour < 12) ? RTC_AM : RTC_PM;
  rtc_initpara.minute = RTC_ByteToBcd2(t->min);
  rtc_initpara.second = RTC_ByteToBcd2(t->sec);
  
  /* RTC current time configuration */
  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;
  }
}

使用特权

评论回复
板凳
lang30|  楼主 | 2022-1-6 11:41 | 只看该作者
QQ2224043166 发表于 2021-12-31 09:41
void RTC_Set( tm* t )
{
  rtc_parameter_struct   rtc_initpara;        

这个只是设置时间, 不是配置啊

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝