今天我们来玩儿EEPROM

EEPROM概述

ESP32内部没有专门的EEPROM,但是我们可以通过FLASH模拟EEPROM,FLASH与EEPROM也是非常相似的,都是非易失性存储器,使用EEPROM,我们就可以在不使用文件系统的情况下,来保存一些数据,可以实现一些更加复杂的功能。

例如,我们可以做到以下功能:

  • 保存变量的最终状态

  • 保存我们的设置

  • 保存设备被激活的次数

  • 永久保存其它任何类型的数据

ESP32在Arduino是使用FLASH开辟的一块存储区域,默认的对象存储大小为4096个字节。

硬件

本实验我们直接用核心板就可以,不添加其它外设了。

软件

EEPROM初始化

代码调用#include <EEPROM.h>后,已经默认定义了一个EEPROM对象,我们使用began方法初始化一下,参数为要操作的字节大小,最大为4096字节,所以这里的参数范围为0-4095。EEPROM的操作以字为单位,size最好设置为4的倍数。

EEPROM.begin(size);

将数据写入EEPROM,使用EEPROM.write();第一个参数为地址,第二个参数为保存的值。

EEPROM.write(address, value);

从EEPROM上读取一个字节,使用EEPROM.read();参数为读取的地址。

EEPROM.read(address);

更新生效

通过EEPROM.write()写入数据后,之后需要调用EEPROM.commit()使更改生效,写入完成。

EEPROM.commit();

EEPROM还有其它函数,都在库文件中,大家可以在下面两个文件中找到相关源码。

EEPROM.h
EEPROM.c

完整程序

这里我们用一个例子来演示一下,我们在整片EEPROM上写入数据,从0-255,反复循环写入,然后再读取出来。

写程序

/**      Created on: 20220128          *      Author:     公众号:跳动的字节*      Function    09 EEPROM写与读*      Version:    V1.0**                        ,%%%%%%%%,*                      ,%%/\%%%%/\%%*                     ,%%%\c''''J/%%%*           %.        %%%%/ o  o \%%%*           `%%.      %%%%       |%%%*            `%%      `%%%%(__Y__)%%'*            //        ;%%%%`\-/%%%'*            ((      /   `%%%%%%%'*             \\     .'           |*              \\   /        \  | |*               \\/          ) | |*                \          /_ | |__*                (____________))))))) 攻城狮**/#include <EEPROM.h>void setup()
{Serial.begin(115200);Serial.println("");EEPROM.begin(4096); //申请4096个字节的EEPROM存储空间//写数据Serial.println("write begin");for(int addr = 0; addr<4096; addr++){int data = addr%256; //EEPROM写入的数据时以字节为单位的EEPROM.write(addr, data); //写入数据}EEPROM.commit(); //保存更改的数据 Serial.println("write done");//读数据Serial.println("read begin");for(int addr = 0; addr<4096; addr++){int data = EEPROM.read(addr); //读数据Serial.print(data);Serial.print(" ");delay(2);if((addr+1)%256 == 0) //每行显示256个数据{Serial.println("");}}Serial.println("read done");
}void loop()
{
}

实验效果:

EEPROM的使用很简单,但这里有一点需要注意,在初始化EEPROM.begin(size)的时候,参数size下一次必须大于等于上一次,否则会有用一些出错,正常情况下,我们就一直用最大值4096即可。

后面,我们会介绍更加高级的方法实现数据的保存,使用Preferences库来保存键值对的方式,还有文件系统的方式,大家到时候再深入了解。

感谢大家,关于ESP32的学习,希望大家Enjoy!

老宇哥带你玩转 ESP32:08 硬件定时器

老宇哥带你玩转 ESP32:07 I2C协议,看这一篇就够了

老宇哥带你玩转 ESP32:06 输出你想要的PWM波形

老宇哥带你玩转 ESP32:04 ADC用起来这也太简单了吧

老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境

‍欢迎 点分享、收藏、点赞、在看。

老宇哥带你玩转 ESP32:09 EEPROM的使用演示相关推荐

  1. 老宇哥带你玩转 ESP32:04 串口玩起来是真方便

    今天我们来玩儿串口. 概述 ESP32 芯片有3 个 UART 接口,UART0,UART1,UART2,支持异步通信和 IrDA,通信速度最高可达 5Mbps,3 个接口可以被 DMA 或 CPU ...

  2. 老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境

    上一篇文章给大家介绍了ESP32使用Arduino官方IDE进行开发的流程. 老宇哥带你玩转ESP32:01入门介绍 (点击阅读) 有部分同学反馈下载的时候特别慢,这个库是托管在GitHub的,国内有 ...

  3. 老宇哥带你玩转ESP32:03 GPIO数字输入与数字输出

    今天我们来点灯. 多路复用器与GPIO矩阵 ESP32芯片有34个物理 GPIO Pad,每个Pad可以当作通用IO,也可以当作外设的引脚,GPIO 引脚通过非常复杂的 GPIO 矩阵互连,这基本上就 ...

  4. 老宇哥带你玩转ESP32:01入门介绍

    接触物联网差不多10年了. 先跟大家聊聊,老宇哥11年进入大学,大一就在实验室开始了电子研发,记得那时候师兄介绍我买了一块郭天祥老师的51开发板,还有配套的一本书,虽然从小非常喜欢电子,经常折腾,有一 ...

  5. mysql为什么用b加树_为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生【宇哥带你玩转MySQL 索引篇(二)】...

    为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生 在上一节,我们聊到数据库为了让我们的查询加速,通过索引方式对数据进行冗余并排序,这样我们在使用时就可以在排好序的数据里进行快速的二分查找,使得查 ...

  6. mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...

    MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...

  7. 蒙文字体怎么安装_焘哥带你玩转字体(三)字体的安装及显示问题

    视频版 焘哥带你玩转字体(三)https://www.zhihu.com/video/1132957888620130304 上两篇文章我们共同了解了[衬线].[非衬线]字体,和如何识别字体的性格,以 ...

  8. 超哥带你玩转正则表达式-(六)

    超哥带你玩转正则 目录 (一)一句话弄明白你的疑问 (二)正则表达式啥玩意? (三)正则表达式的语法(第一招) 1.元字符 2. 重复限定符 3. 分组 4. 转义 5. 条件或 6. 区间 (四)练 ...

  9. 江哥带你玩转C语言 02- 创建第一个C语言程序

    Hello world 这个世界上, 几乎所有程序员入门的第一段代码都是Hello World. 原因是当年C语言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著中第一次引入, 传为后世经 ...

最新文章

  1. node 压缩图片_1Mb压缩成100k,图片无损压缩我选择它
  2. 网站集成支付宝的方法和所需资料下载
  3. cuda linux编译器_CUDA与Linux系统
  4. Android普及入门
  5. apicloud手机查看效果
  6. 匿名内部类 可以访问外部类_Java——内部类详解
  7. 解决:Gitlab上出现“You won‘t be able to pull or push project code via SSH until you add an SSH key to you
  8. Python处理各种压缩文件(bzip2,gzip,zip)
  9. gimp 去掉一个颜色的背景_把拍出来的图片文件的背景阴影去掉——用GIMP色阶功能修图
  10. 建筑能源管理系统主要有什么功能?
  11. 峰值信噪比和结构相似性
  12. 计算机 随机分组的方法,最小化随机分组方法介绍及其SAS实现
  13. 2022-2028年全球与中国手持式按摩器行业市场深度调研及投资预测分析
  14. 手动安装hadoop集群
  15. “匠心之韵,数据之美”之InfoQ专访COO叶谦:解读全域大数据战略背后的技术演进...
  16. Unknown column 'salary' in 'field list'
  17. Pycharm安装、使用的一些操作
  18. [css] css 3d 动画,跟随鼠标移动做球形旋转
  19. 【Linux C】进程、线程和进程间通信
  20. authenticated users: 权限介绍

热门文章

  1. 论文写作过程中的部分word经验
  2. 结构力学-图乘法-梯形公式【笔记】
  3. 接口限流、服务降级、熔断
  4. woddy 3.0笔记本安装经历(下)
  5. 网红直播的收入真的有那么高吗
  6. 喜报销发布V2.6.1,领导审批可选择“加签”人,已审批单据可“作废”
  7. QT界面免费版开源图片转文字工具程序完整版附源码
  8. 磷酸铁锂电池应用前景广阔,英集芯响应市场推出IP2366电源管理芯片
  9. JS-向数组指定位置添加元素
  10. 拼命考上研的普通二本生后来怎么样了?