-2

我正在 nodemcu esp8266 12e 的 eeprom 中写入数据,但它们在写入数据时出错。重新启动板后,值再次丢失,不能保存太久。帮助解决这个问题。当我在板上的 eeprom 中写入数据时,数据写入 eeprom 但重新启动板后该值将丢失。

  memcpy (msg,message.payload,message.payloadlen);
  Serial.print(msg);
  int compare = 1;
  if (0==(compare=(strncmp("ON",msg,4)))) {
    val = 1 ;
    digitalWrite(LED,HIGH);
    EEPROM.write(addr,val);
    compare = 1;
  }
  else if (0==(compare=(strncmp("OFF",msg,4)))) {
    val = 0 ;
    digitalWrite(LED,LOW);
    EEPROM.write(addr,val);
    compare = 1;
  } 
4

1 回答 1

1

因此,ESP8266 实际上没有 EEPROM。相反,Arduino SDK 的作者绘制了一小部分闪存(您可以在链接描述文件中找到实际大小)以用于虚拟 EEPROM。

当您调用 时EEPROM.write(addr, x),它会将数据存储在虚拟 EEPROM 的影子副本中,但在调用之前不会将其存储在闪存EEPROM.commit();中。

于 2017-02-24T00:45:09.683 回答