2

dsleep在模式的帮助下,我有一个代码循环。每次dsleep结束,init.lua加载,做一些事情,然后再去睡觉。

现在我想在我的 ESP8266 上实现一个按钮来触发复位引脚。推送时,我的系统应该进入“设置模式”,提供 AP 进行一些设置(那部分代码是可以的)。

我的问题是:我怎么知道当前的初始化是手动触发的(然后进入设置模式)还是正常重启之后dsleep

我猜应该有两种方法可以做到这一点:

  1. 以编程方式:以某种方式存储由 gpio15 触发器更改的元全局变量dsleep...
  2. 电子方式:按下复位按钮时修改一些东西以改变一个引脚状态

有什么建议吗?

4

3 回答 3

2

我知道使用带有ESP.getResetInfoPtr() 的 Arduino IDE 是可能的(没有任何黑客攻击)。一个人在这里使用它

我不认为它已在 nodemcu 固件中启用。

于 2015-11-14T17:58:38.337 回答
1

您可以使用该node.bootreason()功能获取重启原因。

code, reason示例代码是(如果您不需要其他信息,您可以在之后省略任何变量:

code, reason, exccause, epc1, epc2, epc3, excvaddr, depc = node.bootreason()
于 2016-01-30T21:12:20.557 回答
1

此功能Espressif在他们的 SDK 中实现:

int reason = ESP.getResetInfoPtr()->reason;


switch (reason) {
    case REASON_DEFAULT_RST:
        // Normal Power up
        break;
    case REASON_WDT_RST:
        break;
    case REASON_EXCEPTION_RST:
        break;
    case REASON_SOFT_WDT_RST:
        break;
    case REASON_SOFT_RESTART:
        break;
    case REASON_DEEP_SLEEP_AWAKE:
        break;
    case REASON_EXT_SYS_RST:
        break;

    default:
        break;
    }
于 2019-12-05T20:01:46.217 回答