为什么模组在退出deep_sleep时会重启

Moderator: ESP_ZT

gezhia
Posts: 38
Joined: Thu Nov 24, 2022 10:45 am

为什么模组在退出deep_sleep时会重启

Postby gezhia » Thu Jan 12, 2023 6:02 am

从例程中摘抄出来的代码
Snipaste_2023-01-12_13-59-25.png
Snipaste_2023-01-12_13-59-25.png (42.07 KiB) Viewed 3464 times
运行后输出
Snipaste_2023-01-12_14-00-40.png
Snipaste_2023-01-12_14-00-40.png (26.96 KiB) Viewed 3464 times
发现esp_deep_sleep_start();之后的代码并未被执行,直接重启了,请问是什么原因?

ESP_@In逍遥子
Posts: 132
Joined: Thu Nov 15, 2018 2:06 am

Re: 为什么模组在退出deep_sleep时会重启

Postby ESP_@In逍遥子 » Thu Jan 12, 2023 7:53 am

deep sleep 唤醒后相当于重新启动,这是符合预期的。示例说明文档:examples/system/deep_sleep/README.md

ESP_ZB2
Posts: 21
Joined: Wed Dec 28, 2022 12:33 pm

Re: 为什么模组在退出deep_sleep时会重启

Postby ESP_ZB2 » Thu Jan 12, 2023 8:02 am

我们的deep_sleep(深度睡眠)一般是放在最后启动,唤醒源唤醒之后是重新启动,程序重新执行,所以esp_deep_sleep_start();之后的代码永远执行不到的。
如果想要从当前睡眠位置唤醒,可以参考example的light_sleep示例,这个为轻度睡眠模式。

gezhia
Posts: 38
Joined: Thu Nov 24, 2022 10:45 am

Re: 为什么模组在退出deep_sleep时会重启

Postby gezhia » Thu Jan 12, 2023 8:40 am

谢谢解答支持!
如果deep_sleep模式唤醒是触发重启esp_sleep_get_wakeup_cause()就不适用了,这跟文档说明不一致呢。


esp_sleep_wakeup_cause_t esp_sleep_get_wakeup_cause(void)
Get the wakeup source which caused wakeup from sleep.

返回
cause of wake up from last sleep (deep sleep or light sleep)

ESP_ZB2
Posts: 21
Joined: Wed Dec 28, 2022 12:33 pm

Re: 为什么模组在退出deep_sleep时会重启

Postby ESP_ZB2 » Thu Jan 12, 2023 1:07 pm

你可以去跑一下我们的example里面的deep_sleep示例。我们的esp_sleep_get_wakeup_cause();API是放在esp_deep_sleep_start()睡眠之前的。开启深度睡眠之后,当有唤醒源唤醒之后,程序重新运行,然后通过esp_sleep_get_wakeup_cause()获得唤醒源,然后打印出来的。
如果你放在esp_deep_sleep_start()深度睡眠之后,后面的程序是不会跑到的。

Who is online

Users browsing this forum: No registered users and 3 guests