WCH沁恒单片机
直播中

张涛

7年用户 1313经验值
私信 关注
[问答]

CH582M RTC跨天无法唤醒是什么原因?怎么修改?

CH582M RTC 在23:58:00 设置5分钟后触发唤醒,但是无法唤醒,在其他时间点正常唤醒,R32_RTC_CNT_32K寄存器计满一整天会不会自动清零?如果会,SDK中如下代码是否能实现跨天唤醒?如果无法实现,应该怎么修改?望告知,谢谢。
  void RTC_TRIGFunCfg( UINT32 cyc )
  {
  UINT32 t;
  t = RTC_GetCycle32k() + cyc;
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
  SAFEOPERATE;
  R32_RTC_TRIG = t;
  R8_RTC_MODE_CTRL |= RB_RTC_TRIG_EN;
  R8_SAFE_ACCESS_SIG = 0;
  }

回帖(1)

谭军红

2022-7-29 10:26:11
RTC最大计数是0xA8C00000,换算下来正好是24h,他计数到最大值就会自动从0开始
这个地方需要加个溢出判断


void RTC_TRIGFunCfg( UINT32 cyc )
{
    UINT32 t;

    t = RTC_GetCycle32k() + cyc;


            if(t> 0xA8C00000)
            {
                t-= 0xA8C00000;
            }


    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
    SAFEOPERATE;
    R32_RTC_TRIG = t;
    R8_RTC_MODE_CTRL |= RB_RTC_TRIG_EN;
    R8_SAFE_ACCESS_SIG = 0;
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分