我在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;
}
答案 0 :(得分:0)
因此,ESP8266实际上没有EEPROM。 Arduino SDK的作者改为绘制一小部分闪存(您可以在链接器脚本中找到实际大小)来用于虚拟EEPROM。
当您调用EEPROM.write(addr, x)
时,它会将数据存储在虚拟EEPROM的卷影副本中,但在调用EEPROM.commit();
之前不会将其存储在闪存中。