求助个低功耗和唤醒的问题
Posted: Thu Jan 11, 2024 6:48 am
void app_main(void)
{
gpio_reset_pin(20);
gpio_set_direction(20, GPIO_MODE_INPUT);
ESP_LOGI( "TAG", "由%d唤醒", esp_sleep_get_wakeup_cause() );
rtc_gpio_pullup_en(20);
rtc_gpio_pulldown_dis(20);
esp_sleep_enable_ext0_wakeup(20, 0);//RTC IO,低电平唤醒
ESP_LOGI("TAG", "进入低功耗");
esp_deep_sleep_start();
}
如上代码运行后,打印如下:
I (180) coexist: coexist rom version e7ae62f
I (185) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (205) TAG: 由0唤醒
I (205) TAG: 进入低功耗
问题如下:
进入低功耗模式后十几秒就自动重启,一直循环十几秒重启一次,重启打印都是“由0唤醒”,示波器显示IO20一直是高电平
而且在这十几秒内外部拉低IO20也没反应,不能唤醒设备
注释掉“esp_sleep_enable_ext0_wakeup(20, 0);”,就不会重启了,但同时也无法唤醒设备
尝试在硬件不变的情况下,新建官方“hello world”工程,把上面代码拷贝过去,运行正常,不会重启,能正常唤醒打印“由2唤醒”
求助在我自己的工程里可能是什么原因导致重启的?我的工程里已经把app_main函数里其它代码都删了,只留了上述休眠代码
IDF版本是4.4.2,硬件是ESP32S3
{
gpio_reset_pin(20);
gpio_set_direction(20, GPIO_MODE_INPUT);
ESP_LOGI( "TAG", "由%d唤醒", esp_sleep_get_wakeup_cause() );
rtc_gpio_pullup_en(20);
rtc_gpio_pulldown_dis(20);
esp_sleep_enable_ext0_wakeup(20, 0);//RTC IO,低电平唤醒
ESP_LOGI("TAG", "进入低功耗");
esp_deep_sleep_start();
}
如上代码运行后,打印如下:
I (180) coexist: coexist rom version e7ae62f
I (185) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (205) TAG: 由0唤醒
I (205) TAG: 进入低功耗
问题如下:
进入低功耗模式后十几秒就自动重启,一直循环十几秒重启一次,重启打印都是“由0唤醒”,示波器显示IO20一直是高电平
而且在这十几秒内外部拉低IO20也没反应,不能唤醒设备
注释掉“esp_sleep_enable_ext0_wakeup(20, 0);”,就不会重启了,但同时也无法唤醒设备
尝试在硬件不变的情况下,新建官方“hello world”工程,把上面代码拷贝过去,运行正常,不会重启,能正常唤醒打印“由2唤醒”
求助在我自己的工程里可能是什么原因导致重启的?我的工程里已经把app_main函数里其它代码都删了,只留了上述休眠代码
IDF版本是4.4.2,硬件是ESP32S3