esp32-s3 进入light-sleep模式后无法定时器唤醒
Posted: Mon Apr 24, 2023 1:00 am
void enter_light_sleep_main(void)
{
esp_err_t err = ESP_OK;
while (true) {
esp_sleep_enable_timer_wakeup(5000000); //设置唤醒时间
esp_sleep_enable_gpio_wakeup(); //使能GPIO唤醒
ESP_LOGE(TAG,"Entering light sleep\n");
uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);//等待串口数据发送完毕
int64_t t_before_us = esp_timer_get_time(); //获取睡眠前的时间
esp_light_sleep_start(); //开启睡眠
int64_t t_after_us = esp_timer_get_time(); //在唤醒时候获取唤醒时候的时间
const char* wakeup_reason;
switch (esp_sleep_get_wakeup_cause()) { //获取唤醒源
case ESP_SLEEP_WAKEUP_TIMER:
wakeup_reason = "timer";
break;
case ESP_SLEEP_WAKEUP_GPIO:
wakeup_reason = "pin";
break;
case ESP_SLEEP_WAKEUP_UART:
wakeup_reason = "uart";
break;
default:
wakeup_reason = "other";
break;
}
ESP_LOGE(TAG,"Returned from light sleep, reason: %s, t=%lld ms, slept for %lld ms\n",wakeup_reason, t_after_us / 1000, (t_after_us - t_before_us) / 1000);
}
}
以上为进入light-sleep模式的代码,附件也有截图,在main函数里调用此代码能进入到light-sleep模式,但定时器无法唤醒,请问大家知道是什么原因?
{
esp_err_t err = ESP_OK;
while (true) {
esp_sleep_enable_timer_wakeup(5000000); //设置唤醒时间
esp_sleep_enable_gpio_wakeup(); //使能GPIO唤醒
ESP_LOGE(TAG,"Entering light sleep\n");
uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);//等待串口数据发送完毕
int64_t t_before_us = esp_timer_get_time(); //获取睡眠前的时间
esp_light_sleep_start(); //开启睡眠
int64_t t_after_us = esp_timer_get_time(); //在唤醒时候获取唤醒时候的时间
const char* wakeup_reason;
switch (esp_sleep_get_wakeup_cause()) { //获取唤醒源
case ESP_SLEEP_WAKEUP_TIMER:
wakeup_reason = "timer";
break;
case ESP_SLEEP_WAKEUP_GPIO:
wakeup_reason = "pin";
break;
case ESP_SLEEP_WAKEUP_UART:
wakeup_reason = "uart";
break;
default:
wakeup_reason = "other";
break;
}
ESP_LOGE(TAG,"Returned from light sleep, reason: %s, t=%lld ms, slept for %lld ms\n",wakeup_reason, t_after_us / 1000, (t_after_us - t_before_us) / 1000);
}
}
以上为进入light-sleep模式的代码,附件也有截图,在main函数里调用此代码能进入到light-sleep模式,但定时器无法唤醒,请问大家知道是什么原因?