ESP8266有两种重启方法,分别为:ESP.reset()和ESP.restart(),很多人代码中都用ESP.reset()重启,但是通常情况下使用ESP.restart()会更好, 这两者区别如下: ESP.reset() 是一个硬复位,这种重启方式可能会使一些寄存器回归到原始状态,即丢失寄存器数据,这会导致重启后的程序出现问题,它或多或少像计算机上的复位按钮。 ESP.restart() 是通过向ESP8266的SDK发送信号重启,而不是简单粗暴的复位,所以它是一个更‘软’的重启方式。 所以,把你代码中的ESP.reset()换成ESP.restart()吧! 即使遇到GPOIO#0的问题,我也遇到了同样的问题,但它没有任何作用。 然后我推断出,当我将GPIO用作输出时,也许硬件没有在软复位时将其复位为输入,所以复位将取决于GPIO#0的状态。 因此,在重启之前我将GPIO#0设置为高电平,它可以正常工作! 补充:GPIO 15 低电平、GPIO 0 高电平 、GPIO 2 高电平为ESP8266程序运行模式,需要软重启功能有效 可能需要保证以上三个引脚的电平状态。 另外:GPIO 15 低电平、GPIO 0 低电平 、GPIO 2 高电平为ESP8266 UART下载模式。
1