EspSaveCrash-master是一款专为Arduino与ESP8266设计的实用库,提供便捷的重启及定时重启功能,助力开发者轻松实现设备自动化维护。
ESP8266有两种重启方法:`ESP.reset()` 和 `ESP.restart()`。尽管许多人倾向于使用 `ESP.reset()` 进行重启操作,但通常情况下,使用 `ESP.restart()` 更为合适。这两种方式的区别在于:
- 使用 `ESP.reset()` 会导致硬复位,这可能会使一些寄存器恢复到初始状态并导致数据丢失。
- 相反地,`ESP.restart()` 是通过向 ESP8266 的 SDK 发送信号来重启设备的,而不是进行简单的硬件重置。因此它是一种更“软”的重启方式。
在遇到 GPOIO#0 问题的情况下,我发现即使使用 `ESP.reset()` 或者 `ESP.restart()`, 仍然无法解决问题。我推断可能是由于当 GPIO 被设置为输出时,在执行软复位操作期间硬件没有将其状态重置回输入模式所致。因此,重启前将 GPIO #0 设置为高电平可以解决这个问题。
此外,请注意:在 ESP8266 处于程序运行模式下(即GPIO 15低电平、GPIO 0 高电平 和 GPIO 2 高电平时),需要保证软重置功能有效;而在 UART 下载模式时,引脚配置为 GPIO 15 低电平、GPIO 0 低电平 和 GPIO 2 高电平。