物联网开发Arduino_EEPROM_Esp8266断电存储实例

查询了很多资料,反复尝试总出现各种错误。目前针对结构体参数存储数据到EEPROM进行了尝试和总结,以便学习使用。

废话少说:直接代码并注解!【首发于头条,转发于此,更多资源关注,久爱物联网】

重点

1、写要提交,方法不能遗漏!EEPROM.end();或EEPROM.commit();必具其一,建议前者

2、内存空间申请大小必须大于结构体数据长度(4的倍数) 如:EEPROM.begin(128);

3、存储地址不能重叠,且有效利用!!寸土是金!上一数据地址+1开始

/*****************************************************
调用#include 来使用EEPROM;
使用EEPROM时,首先调用EEPROM.begin(size),size为需要读写的数据字节最大地址+1,取值4~4096;
使用EEPROM.write(addr,data)来写数据,参数分别为地址&数据,写数据后需要通过EEPROM.commit()或EEPROM.end()将数据保存到EEPROM;
使用EEPROM.read(addr)来读数据;


*久爱物联网(jiuaiiot)* 注意事项 * 
当你需要分多次写EEPROM时,切记之后每次EEPROM.begin(size);中输入的size必须大于等于之前每次输入的值。
简单点的话可以每次写入时这里都输入你可能会用到的最大值,比如如果对时间和内存要求不高的话这里可以写死4096。
你每次操作EEPROM,根据你输入的size,会建立一个size大小的缓存并从EEPROM地址0开始读取size长度数据到该缓存,你之后的读写操作是对这个缓存的操作。
当你提交写入的时候,程序才会把缓存中的数据写入EEPROM,但是EEPROM的写入是以扇区为单位的(4096字节)
那么在写入的时候从地址0开始的size个数数据时ok的,但后面4096-size个数据就可能会被改变(我目前遇到的就是后面的数据都变255了)。
这应该是这个库的一个逻辑bug。因为ESP8266的EEPROM并非真正的EEPROM,只是从flash上划了一个扇区用,所以读写都只能按扇区来。
******************************************************/
//引用头文件
#include 
//定义一个写和读的通用方法
#define EEPROM_write(address,p) { int i = 0;byte *pp = (byte*)&(p);for(;i

学习2种赋值方法:strcpy()  和 sprintf() 

物联网开发Arduino_EEPROM_Esp8266断电存储实例_第1张图片

更多学习实践,全部实践后的总结。更多精彩敬请关注!!有惊喜哦

物联网开发Arduino_EEPROM_Esp8266断电存储实例_第2张图片

 物联网开发Arduino_EEPROM_Esp8266断电存储实例_第3张图片物联网开发Arduino_EEPROM_Esp8266断电存储实例_第4张图片

物联网开发Arduino_EEPROM_Esp8266断电存储实例_第5张图片

你可能感兴趣的:(物联网笔记,学习笔记,网络笔记)