2017-02-21 131 views
-2

我正在将数据写入nodemcu esp8266 12e的eeprom中,但它们在写入数据时出错。重新启动电路板后,该值再次丢失,不能存储很长时间。有助于解决这个问题。 当我在eeprom上写入数据时,数据在eeprom中写入,但在重新启动电路板后,数值将丢失。在Nodemcu中写入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

因此,ESP8266实际上没有EEPROM。 Arduino SDK的作者将映射出一小段闪存(您可以在链接器脚本中找到实际大小),以用于虚拟EEPROM。

当您拨打EEPROM.write(addr, x)时,它将数据存储在虚拟EEPROM的卷影副本中,但不会将其存储在闪存中,直到调用EEPROM.commit();