使用esp8266在blinker下eeprom读写BUG 除4095地址,也试过2500-4095很多个地址写入后, 重新读取都是0。应该是Blinker 的一个BUG,不用Blinker可以正常写入和读取。
void setup(){//省略其他初始化没复制上来。。。。。。。。。。。。。。。。。。。。。。。
EEPROM.begin(4096); //开启EEPROM,开辟1024个位空间 Setpoint = EEPROM.read(4095) ; //将EEPROM.read(0)的值赋予Setpoint
}
void EEPROM_Save()
{
if ( (millis() / 1000 - EEPROM_Save_time) >= 3 ) //每3秒检查写入一次数据:
{
EEPROM_Save_time = millis() / 1000;
byte arom = EEPROM.read(4095) ;
byte bbb = Setpoint;
if ( bbb == arom ) //判断设置的温度是否和存储的数值相等
{
Serial.println("The same");
} else if( bbb != arom )
{
byte ccc = Setpoint;
EEPROM.write(4095,ccc); //给EEPROM 第X位,写入ccc的值
EEPROM.commit(); //将数据保存到EEPROM
EEPROM.end(); //写入flash,并且释放内存空间
byte aaa = EEPROM.read(4095) ;
Serial.print("EEPROM:");
Serial.println(aaa);
Serial.println(ccc);
}
}
}
void loop()
{
Blinker.run(); //运行Blinker
EEPROM_Save();
}
已经避开以下地址:ESP8266&ESP32EEPROMESP-Arduino SDK 中 EEPROM 是使用 Flash 模拟的, 以下EEPROM地址在 blinker 库中已占用, 用户开发时务必避开以下地址。 地址 用途
0-1279 自动化控制数据
1280-1535 专属设备数据
1536-2431 定时器配置数据
2432-2435 ESP AT模块串口配置数据
2436-2447 OTA配置数据
串口打印内容:
The same
The same
EEPROM:0
255
EEPROM:0
255
EEPROM:0
255
EEPROM:0
255
EEPROM:0
255
EEPROM:0
255
|