老宇哥带你玩转 ESP32:09 EEPROM的使用演示
今天我们来玩儿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的使用演示相关推荐
- 老宇哥带你玩转 ESP32:04 串口玩起来是真方便
今天我们来玩儿串口. 概述 ESP32 芯片有3 个 UART 接口,UART0,UART1,UART2,支持异步通信和 IrDA,通信速度最高可达 5Mbps,3 个接口可以被 DMA 或 CPU ...
- 老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境
上一篇文章给大家介绍了ESP32使用Arduino官方IDE进行开发的流程. 老宇哥带你玩转ESP32:01入门介绍 (点击阅读) 有部分同学反馈下载的时候特别慢,这个库是托管在GitHub的,国内有 ...
- 老宇哥带你玩转ESP32:03 GPIO数字输入与数字输出
今天我们来点灯. 多路复用器与GPIO矩阵 ESP32芯片有34个物理 GPIO Pad,每个Pad可以当作通用IO,也可以当作外设的引脚,GPIO 引脚通过非常复杂的 GPIO 矩阵互连,这基本上就 ...
- 老宇哥带你玩转ESP32:01入门介绍
接触物联网差不多10年了. 先跟大家聊聊,老宇哥11年进入大学,大一就在实验室开始了电子研发,记得那时候师兄介绍我买了一块郭天祥老师的51开发板,还有配套的一本书,虽然从小非常喜欢电子,经常折腾,有一 ...
- mysql为什么用b加树_为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生【宇哥带你玩转MySQL 索引篇(二)】...
为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生 在上一节,我们聊到数据库为了让我们的查询加速,通过索引方式对数据进行冗余并排序,这样我们在使用时就可以在排好序的数据里进行快速的二分查找,使得查 ...
- mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...
MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...
- 蒙文字体怎么安装_焘哥带你玩转字体(三)字体的安装及显示问题
视频版 焘哥带你玩转字体(三)https://www.zhihu.com/video/1132957888620130304 上两篇文章我们共同了解了[衬线].[非衬线]字体,和如何识别字体的性格,以 ...
- 超哥带你玩转正则表达式-(六)
超哥带你玩转正则 目录 (一)一句话弄明白你的疑问 (二)正则表达式啥玩意? (三)正则表达式的语法(第一招) 1.元字符 2. 重复限定符 3. 分组 4. 转义 5. 条件或 6. 区间 (四)练 ...
- 江哥带你玩转C语言 02- 创建第一个C语言程序
Hello world 这个世界上, 几乎所有程序员入门的第一段代码都是Hello World. 原因是当年C语言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著中第一次引入, 传为后世经 ...
最新文章
- node 压缩图片_1Mb压缩成100k,图片无损压缩我选择它
- 网站集成支付宝的方法和所需资料下载
- cuda linux编译器_CUDA与Linux系统
- Android普及入门
- apicloud手机查看效果
- 匿名内部类 可以访问外部类_Java——内部类详解
- 解决:Gitlab上出现“You won‘t be able to pull or push project code via SSH until you add an SSH key to you
- Python处理各种压缩文件(bzip2,gzip,zip)
- gimp 去掉一个颜色的背景_把拍出来的图片文件的背景阴影去掉——用GIMP色阶功能修图
- 建筑能源管理系统主要有什么功能?
- 峰值信噪比和结构相似性
- 计算机 随机分组的方法,最小化随机分组方法介绍及其SAS实现
- 2022-2028年全球与中国手持式按摩器行业市场深度调研及投资预测分析
- 手动安装hadoop集群
- “匠心之韵,数据之美”之InfoQ专访COO叶谦:解读全域大数据战略背后的技术演进...
- Unknown column 'salary' in 'field list'
- Pycharm安装、使用的一些操作
- [css] css 3d 动画,跟随鼠标移动做球形旋转
- 【Linux C】进程、线程和进程间通信
- authenticated users: 权限介绍