FR8008A休眠后无法唤醒



  • 目的:RTC设置定时A值为1s,周期性工作后休眠
    程序结构:
    main
    {
    RTCinit();
    while(1)
    {
    1、system_sleep_enable();
    2、co_printf("sleep start\r\n");
    3、while(!ble_stack_sleep_check());
    4、co_printf("enter sleep allowed\r\n");
    5、ble_stack_enter_sleep();
    6、co_printf("ble_stack_enter_sleep\r\n");


    目前情况:在不执行休眠时,RTC周期工作正常,在执行休眠后,RTC无法进入中断(中断打印调试信息);然后在执行休眠时,程序可以运行到第5步,且可以看出功耗有降低,判断芯片应该进入了休眠,进入了user_entry_before_sleep_imp函数,但是这种情况,RTC无法唤醒,系统会被看门狗重启,user_entry_after_sleep_imp函数以及程序的第六步无法运行到。
    目前个人判断下来应该是进入了休眠,但没有被RTC唤醒,但是就不清楚到底是哪里配置得不对,或者流程思路有问题,发帖请教。



  • 此回复已被删除!


  • 你这个写法有问题 这个代码一直进入sleep



  • // pmu_port_wakeup_func_set(GPIO_PORT_D, (1<<GPIO_BIT_5));
    pmu_port_wakeup_func_set(GPIO_PORT_D, (1<<GPIO_BIT_6));
    NVIC_EnableIRQ(PMU_IRQn);
    #if 1
    co_delay_100us(10*2000);
    system_sleep_enable();
    // system_power_off();
    #else
    system_sleep_disable();

    #endif