写入EPROM

/*
该代码向EEPROM写入4096字节数据
*/
#include <EEPROM.h>void setup()
{Serial.begin(115200);Serial.println("");Serial.println("开始写入");EEPROM.begin(4096); //申请操作到地址4095,size=目标地址+1for(int addr = 0; addr<4096; addr++){int data = addr%256; //在该代码中等同于int data = addr;因为下面write方法是以字节为存储单位的EEPROM.write(addr, data); //写数据}EEPROM.commit(); //保存更改的数据// EEPROM.end(); //同EEPROM.commit();Serial.println("写入完成");
}void loop()
{}

读取EPROM

/*
该代码从EEPROM读取4096字节数据
*/
#include <EEPROM.h>void setup()
{Serial.begin(115200);Serial.println("");Serial.println("开始读取");EEPROM.begin(4096); //申请操作到地址4095(比如你只需要读写地址为100上的一个字节,该处也需输入参数101)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("读取结束");
}void loop()
{}


基础、注意事项:

Arduino core for the ESP32中的EEPROM是在flash中开辟的存储区域;
调用#include <EEPROM.h>来使用EEPROM;
EEPROM库中默认已经定义了一个名为EEPROM的对象,一般情况下直接使用该对象即可,如果有需要用户也可以在flash中自定义新的EEPROM对象,使用方法参考文后链接;
默认的EEPROM对象大小为4096字节,用户操作地址为0~4095;
使用EEPROM时,首先调用EEPROM.begin(size),size为需要读写的数据字节最大地址+1,取值1~4096;
使用EEPROM.write(addr,data)来写数据,参数分别为地址&数据,写数据后需要通过EEPROM.commit()或EEPROM.end()将数据保存到EEPROM;
使用EEPROM.read(addr)来读数据;

对EEPROM的操作以4字节为单位,比如上面中第一次size写10时,程序自动将size转成了12处理,第二次size写5时,程序自动将size转成了8处理;
每次EEPROM.begin(size)时程序会建立一个size长度的缓存,然后从EEPROM地址0开始依次读取size个数据到缓存,你之后的read和write操作的都是这个缓存;
当你使用commit或end时,程序会将上面的缓存依次从地址0开始写入EEPROM;
问题就出在上面那步,因为ESP32的EEPROM并非真正的EEPROM,只是从flash上划了一个扇区用,所以读写都只能按扇区(4096字节)来,那么在写入的时候从地址0开始的size个数数据时ok的,但后面4096-size个数据就可能会被改变;
可以看到第二次写操

待解决疑问:
测试结果输出了4096个int型,EPROM应当是4096*4字节?

猜想:
虽然代码定义的是int型变量接收,但实际上读取的只有一个字节的数字,但如此

    int data = addr%256; EEPROM.write(addr, data);

这里写入的也是int型,又该如何解释呢?

参考、引述文章:
使用Arduino开发ESP32(05):EEPROM使用演示

使用Arduino开发ESP32(八):ESP32的EPROM的写入读取相关推荐

  1. 使用arduino开发esp8266和esp32时首选项设置方法(附国内开发板管理网址)

    摘要:本文介绍arduino在开发esp8266和esp32时的首选项设置方法.其中给出的国内开发板管理器网址速度飞起. 基于esp8266开发的板子有很多种,例如D1等. esp8266的开发板管理 ...

  2. 开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴

    发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32 ...

  3. 开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令、ESP-01S接收指令,通过ESP-01S继电器实现LED灯开关控制_公羽兴

    发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令.ESP-0 ...

  4. 如何制作自己的Arduino开发板

    如何制作自己的Arduino开发板 原文地址 如何制作自己的Arduino开发板 – 八色木 你想过用简单的元件来制作Arduino板吗?或者想过根据自己的需要做一个定制开发板吗?这个项目就是向大家展 ...

  5. Arduino IDE 如何添加 ESP32 开发板?

    Arduino IDE 如何添加 ESP32 开发板 arduino-esp32 使用引导 Installation instructions using Arduino IDE Boards Man ...

  6. ESP32基于arduino开发的心跳体温检测系统(一)项目介绍及准备

    本文为被北邮信息系统设计课程摧残的同学们(包括但不限于作者的室友)提供一个可行的方案及模板. 本项目使用Arduino作为开发环境,使用ESP32开发一个心跳体温检测系统. 系统通过心跳传感器--pu ...

  7. ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程

    ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程 ESP RainMaker ESP RainMaker 是乐鑫推出的一个端到端平台.基于该平台,用户无需管理基础设 ...

  8. 使用Arduino开发ESP32(07):系统时间和定时任务调度器Ticker

    文章目录 目的 系统时间及应用 定时任务调度器Ticker 使用步骤 常用方法 使用事例 事例一 事例二 事例三 总结 目的 开发中经常会用到时间相关操作,主要就是用到系统时间.延时操作.定时任务调度 ...

  9. 使用Arduino开发ESP32(11):IO口与相关外设说明与记录

    文章目录 目的 数字IO口 基本使用 外部中断 使用示例 参考链接 LEDC(PWM) 常用方法 使用示例 参考链接 SigmaDelta 参考链接 ADC 常用方法 使用示例 参考链接 存在的问题 ...

最新文章

  1. js如何生成[n,m]的随机数
  2. Android 将ARGB图片转换为灰度图
  3. 【Maven3教程】Maven多工程、多模块
  4. android p新功能_android 11今天发布这是新功能
  5. Android 弹出对话框
  6. vscode创建代码截图_如何在VSCode中创建代码配置文件
  7. 戴尔微型计算机怎么换系统,给戴尔外星人笔记本电脑的win7系统更换为win10系统图文教程...
  8. jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家
  9. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群
  10. JS模拟实现数组的map方法
  11. NexentaFusion配置文档
  12. Jfinal启动原理及源码简析
  13. Win10系列:WinJS库控件
  14. linux中grep命令,Linux下grep命令详解
  15. 服务器修改传奇道士神兽升级,传奇游戏小道士关于神兽升级的研究——骨灰级传奇玩家分享...
  16. R 计算变量之间的相关性
  17. 2020-2021年顶会上关于解决偏差(bias)问题的文献整理
  18. [电影]推荐《启示》--完美的玛雅文化背景
  19. 微信群活码以及微信活码防封如何实现技术分享
  20. python简单小动画

热门文章

  1. mac键盘符号的使用_在Mac上使用表情符号的终极指南
  2. Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information
  3. 致远a8-v5-6.0协同管理软件_高危漏洞利用预警:近期利用“致远OA任意文件写入漏洞”的攻击较多...
  4. 致远a8-v5-6.0协同管理软件_Batteries for Mac(电池电量管理软件) v2.0
  5. Linux 各个目录的作用
  6. web课程设计网页规划与设计:文化网站设计——中国水墨风书画艺术网站(12个页面)
  7. 关于下一代防火墙的几个思考
  8. 腾讯 天美一面凉经<2021.03.19>
  9. 计算机科学的本质与操作系统中十条哲学原理
  10. [小说]魔王冢(17)鬼金羊