static void power_sleep_event_handler(co_power_sleep_state_t sleep_state, co_power_status_t power_status) { switch (sleep_state) { case POWER_SLEEP_ENTRY: // 系统即将进入睡眠 { num_i ++; #if !CONFIG_32K_IN_DEEP_SLEEP_ENABLE // HREGW0(&HS_HIB->CONFIG_1, HIB_CONFIG_PD_RC32K_LDOSTARTUP_MASK); // 深睡眠中关闭32K晶振的特殊寄存器设置 #endif if (power_status == POWER_DEEP_SLEEP) { // LOG_WRN("######################\n"); // 记录深睡眠事件 } break; } case POWER_SLEEP_LEAVE_TOP_HALF: // 唤醒上半部(关键硬件恢复) { num2 ++; #if !CONFIG_32K_IN_DEEP_SLEEP_ENABLE // HREGW1(&HS_HIB->CONFIG_1, HIB_CONFIG_PD_RC32K_LDOSTARTUP_MASK); // 恢复32K晶振的特殊寄存器设置 #endif #if CONFIG_RF_TXRX_PIN_ENABLE rf_txrx_pin_enable(true, PIN_RF_TX, PIN_RF_RX, 0); // 启用RF收发引脚 #endif //硬件重新初始化 hw_reinit(); //LOG_WRN("@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"); // 记录深睡眠事件 break; } case POWER_SLEEP_LEAVE_BOTTOM_HALF: // 唤醒下半部(次要恢复) // LOG_WRN("!\n"); // 记录深睡眠事件 num3 ++; break; } } |