
ESP32设备使用machine.deepsleep()函数后的唤醒情况详解
近期,用户在使用machine.deepsleep()函数控制ESP32设备进入深度睡眠后,发现设备在唤醒时显示rst:0x5 (DEEPSLEEP_RESET)和boot:0x13 (SPI_FAST_FLASH_BOOT)的信息,并对此感到困惑。下面是用户提供的代码及运行结果:
import machineimport time初始化RTC用于在深度睡眠间保存数据
rtc = machine.RTC()
定义任务函数
def task1():print("执行任务1")
这里添加任务1的具体操作
# 比如读取传感器、控制GPIO等
def task2():print("执行任务2")
这里添加任务2的具体操作
# 比如发送数据、改变状态等
检查唤醒原因
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
从RTC内存读取状态
state = rtc.memory()print("从深度睡眠唤醒,之前状态:", state)if state == b'x00': task1() new_state = b'x01'else: task2() new_state = b'x00'
else:
首次启动时执行任务1
print("冷启动")task1()new_state = b'x01'
保存新状态到RTC内存
rtc.memory(new_state)
设置深度睡眠30秒(30000毫秒)后唤醒
print("进入深度睡眠...")machine.deepsleep(30000)
运行结果如下:
冷启动执行任务1进入深度睡眠...ets Jul 29 2019 12:21:46rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0xeeclk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00mode:DIO, clock div:2load:0x3fff0030,len:4540ho 0 tail 12 room 4load:0x40078000,len:12344ho 0 tail 12 room 4load:0x40080400,len:4124entry 0x40080680MicroPython v1.19.1 on 2022-06-18; ESP32 module with ESP32Type "help()" for more information.
用户的问题在于为何会出现rst:0x5 (DEEPSLEEP_RESET)和boot:0x13 (SPI_FAST_FLASH_BOOT)的信息。经过分析,发现问题出在代码未能正确上传到ESP32设备上。
在使用machine.deepsleep()函数时,ESP32设备会进入深度睡眠状态,并在设定时间后自动唤醒。rst:0x5 (DEEPSLEEP_RESET)表示设备是从深度睡眠状态中唤醒的,而boot:0x13 (SPI_FAST_FLASH_BOOT)表示设备使用SPI快速闪存启动模式进行启动。这些信息都是正常的设备启动和唤醒过程中的日志。
然而,用户的问题在于代码未能正确上传到ESP32设备上,导致设备在唤醒后无法执行预期的代码。因此,解决此问题的方法是确保将代码正确上传到ESP32设备上,这样设备在从深度睡眠中唤醒后就能正确执行预期的任务。
以上就是ESP32设备在使用machine.deepsleep()函数后,为什么会出现rst:0x5 (DEEPSLEEP_RESET)和boot:0x13 (SPI_FAST_FLASH_BOOT)的信息?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1360774.html
微信扫一扫
支付宝扫一扫