打印

GD32F105进入深度睡眠后,RTC中断不能正常运行。

[复制链接]
1942|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
地瓜土豆|  楼主 | 2021-5-28 17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 地瓜土豆 于 2021-6-1 15:28 编辑

GD32F105进入深度睡眠后,RTC中断不能正常运行。常规模式下是可以产生中断的。我想深度睡眠之后定时唤醒,但是深度睡眠之后,RTC中断不能相应。一直都在深度睡眠模式,退不出来。求大佬解惑。谢谢!以下是我的代码。void rtc_conf(void)
{
        nvic_irq_enable(RTC_IRQn,1,4);                                                //中断优先级

        rcu_periph_clock_enable(RCU_BKPI);                                //开启时钟 后备寄存器
        rcu_periph_clock_enable(RCU_PMU);
        pmu_backup_write_enable();                                                                //允许访问 后备寄存器
        bkp_deinit();                                                                                                                        //反初始化
        //rcu_osci_on(RCU_LXTAL);
        //rcu_osci_stab_wait(RCU_LXTAL);
        //rcu_rtc_clock_config(RCU_RTCSRC_LXTAL);
        rcu_osci_on(RCU_IRC40K);                //使能低速慢时钟
        rcu_osci_stab_wait(RCU_IRC40K);//等待低速慢时钟稳定
        rcu_rtc_clock_config(RCU_RTCSRC_IRC40K);        //选择低速慢时钟源
        rcu_periph_clock_enable(RCU_RTC);        //使能RTC
        rtc_register_sync_wait();        //等待RTC寄存器同步
        rtc_lwoff_wait();        //等待RTC寄存器上的最后一次写入操作完成
        rtc_interrupt_enable(RTC_INT_SECOND);                        //使能 秒中断
        rtc_lwoff_wait();        //等待RTC寄存器上的最后一次写入操作完成
        rtc_prescaler_set(32767);                                                               
        rtc_lwoff_wait();                                                                                                        
}

void RTC_IRQHandler(void)
{
                if(rtc_flag_get(RTC_FLAG_SECOND) != RESET)
                {
                                Rtc_Time.s++;
                                SleepS_Rtc++;
                                rtc_flag_clear(RTC_FLAG_SECOND);   
    }
}

void Sleep_Wdog(long sleep_s)
{
          float car_v=0;
          SleepS_Rtc=0;
         Rtc_Time.s=0;
         while(SleepS_Rtc<sleep_s)               
        {
                fwdgt_counter_reload();        //喂狗
                  pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);         
                delay_ms(50);
        }
}

使用特权

评论回复

相关帖子

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

本版积分规则

2

主题

5

帖子

1

粉丝