...
嵌入式 arduinoesp8266

esp8266 EEPROM操作,储存数据到flash中

我们在使用esp8266做小玩意的时候,每次都需要配网比较麻烦,所以把配网信息储存在ROM中是非常有必要的。

首先要用到EEPROM这个库

写EEPROM

EEPROM.write(addr, len);
必须要执行commit才有效
EEPROM.commit();

读EEPROM

EEPROM.read(addr);

下面有几个操作eeprom的函数

#include <EEPROM.h>

// 联合体存int类型,int占2个字节故使用联合体公用地址原理即可存储int
union int_value {
  int i;      //int类型成员变量
  byte b[2];  //byte类型数组成员
};
// 写int到eeprom
void Write_Int(int addr, int value) {
  int_value e_int;                   //定义一个结构对象
  e_int.i = value;                   //给e_int.i重新赋值为a
  EEPROM.write(addr, e_int.b[0]);    //给EEPROM 第0位写入e_int.b[0]的值
  EEPROM.write(++addr, e_int.b[1]);  //给EEPROM 第1位写入e_int.b[1]的值
  EEPROM.commit();
}
// 读取int
int Read_Int(int addr) {
  byte a1 = EEPROM.read(addr);    //a1获取EEPROM 0 位的值
  byte a2 = EEPROM.read(++addr);  //a2获取EEPROM 1 位的值
  int_value e_int;
  e_int.b[0] = a1;
  e_int.b[1] = a2;
  return e_int.i;
}

// 写入string到eeprom中
//length写入记录字符串长度的地址,addr是字符串的地址,str为要保存的字符串
void Write_String(int len_addr, int addr, String str) {
  //  EEPROM.write(len_addr, str.length());//写入str字符串的长度
  EEPROM.write(len_addr, str.length());  //写入str字符串的长度
  //把str所有数据逐个保存在EEPROM
  for (int i = 0; i < str.length(); i++) {
    EEPROM.write(addr + i, str[i]);
  }
  delay(10);
  EEPROM.commit();
}

// 读取string
//length位是字符串长度,addr是起始位(字符串首地址)
String Read_String(int len_addr, int addr) {
  String data = "";
  char length = EEPROM.read(len_addr);  //读取记录在EEPROM中的数据长度
  //从EEPROM中逐个取出每一位的值,并链接
  for (int i = 0; i < length; i++) {
    data += char(EEPROM.read(addr + i));
  }
  return data;
}
Arduino基础函数,常用函数大全 esp8266创建web服务器 创建配网web网页
biu biu biu
electron 前端使用vue 或 webpack 打包一些问题整理 20 个实用的 JavaScript 单行代码 MacStroke下载及appleScript 模拟按键脚本 共享打印机0x0000011b修复的另一种方法 yarn 设置淘宝镜像 yarn 错误There appears to be trouble with your network connection. Retrying...