0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino EEPROM设置初始化

454398 来源:wv 2019-10-21 17:28 次阅读

步骤1:什么是EEPROM

EEPROM是一个很小的存储器,即使在Arduino板断电时,其值也会保留。这就像一个很小的硬盘驱动器,因此您可以在下次启动设备时存储参数。根据Arduino板的类型,每个板上的可用存储量会有所不同,例如Uno有1024字节,Mega有4096字节,LilyPad有512字节。

重要的是要注意,所有EEPROM都有有限数量的写周期。 Atmel为Arduino上的EEPROM指定了大约100000写/擦除周期的预期寿命。这听起来好像很多写操作,但是如果您正在循环读取和写入内容,则很容易达到此限制。一旦一个位置被写入和擦除了太多次,它就会开始变得不可靠。它可能无法返回正确的数据,或者无法从相邻位返回值。

步骤2:导入库

要使用此内存,我们首先包括Arduino提供的库。该库提供了两种方法:读取和写入相应的操作。读取功能接受我们要读取的地址,而写入功能接受我们要写入的地址和值。

在我们的示例中,目标是在Arduino的每次启动时准备好一系列的设置,因此我们首先定义要用于存储的数组,并为每个对象定义地址。我们要存储的设置。在我们有1024个可用字节的芯片中,地址位置将从0到1023。

步骤3:设置初始化标志

初始设置默认值的技巧是使用地址之一作为指示,以了解是否已初始化设置。我使用了最后一个地址,因为它通常不用于其他任何地方。如果存储的值中有一个“ T”字符,loadSettings函数将首先检查该位置,如果没有,它将通过设置进行设置,并为每个值写入初始值。完成后,它将立即将跟踪初始化设置的位置的值设置为“ T”字符,并且下次打开Arduino电源时,我们将不再初始化值,而是将保存的数据读入

步骤4:更新设置

要更新值,我们可以使用我们拥有的write函数关于初始化,但更好的方法是使用提供的更新功能。该功能的作用是,它首先检查我们要保存的值是否与EEPROM中已经存在的值相同,如果不保存则不更新。这样,它会尝试减少写操作的次数,以延长EEPROM的寿命。

步骤5:尽情享受吧!

我希望这个Instructable对您有帮助,并且您设法学到了一些东西。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    1020

    浏览量

    81593
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187046
收藏 人收藏

    评论

    相关推荐

    OMAP5912多媒体处理器初始化参考指南

    电子发烧友网站提供《OMAP5912多媒体处理器初始化参考指南.pdf》资料免费下载
    发表于 12-17 16:20 0次下载
    OMAP5912多媒体处理器<b class='flag-5'>初始化</b>参考指南

    STM32F407 MCU使用SD NAND 不断电初始化失效解决方案

    STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专业的解决方案。
    的头像 发表于 12-11 10:51 330次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案

    基于旋转平移解耦框架的视觉惯性初始化方法

    精确和鲁棒的初始化对于视觉惯性里程计(VIO)至关重要,因为不良的初始化会严重降低姿态精度。
    的头像 发表于 11-01 10:16 347次阅读
    基于旋转平移解耦框架的视觉惯性<b class='flag-5'>初始化</b>方法

    TMS320C6000 McBSP初始化

    电子发烧友网站提供《TMS320C6000 McBSP初始化.pdf》资料免费下载
    发表于 10-26 10:10 0次下载
    TMS320C6000 McBSP<b class='flag-5'>初始化</b>

    视频引擎初始化失败怎么回事

    视频引擎初始化失败是一个常见的威廉希尔官方网站 问题,它可能由多种原因引起,包括软件冲突、硬件问题、驱动程序问题、系统设置错误等。要解决这个问题,需要对可能的原因进行详细的分析和诊断。 1. 软件冲突 1.1
    的头像 发表于 09-18 18:18 1254次阅读

    Keil中变量不被初始化方法

    有些时候在我们的应用过程中要求变量有连续性,或者现场保留,例如Bootloader跳转,某种原因的复位过程中我们有些关键变量不能被初始化,在不同的编译环境下有不同的设置,本文就这个操作做总结,分别
    的头像 发表于 08-30 11:47 669次阅读
    Keil中变量不被<b class='flag-5'>初始化</b>方法

    Jtti:MySQL初始化操作如何设置root密码

    MySQL初始化时,可以通过以下步骤设置root密码: 打开命令行工具,使用以下命令启动MySQL服务:   sudo service mysql start   使用以下命令登录MySQL服务器
    的头像 发表于 08-08 16:45 368次阅读

    瀚海微SD NAND应用之SD协议存储功能描述2 初始化命令

    初始化和识别过程: 总线激活后,主机启动卡初始化和识别过程。 初始化过程从SD SEND OP COND (ACMD41)开始,通过设置其操作条件和OCR中的HCS位。HCS (Ho
    的头像 发表于 07-22 10:54 365次阅读
    瀚海微SD NAND应用之SD协议存储功能描述2 <b class='flag-5'>初始化</b>命令

    arduino环境下用blufi无法配网,蓝牙初始化不成功是怎么回事?

    arduino环境下用blufi无法配网,蓝牙初始化不成功,是什么回事
    发表于 06-26 08:18

    初始化IO口为外部中断线的时候,最先初始化的会被后初始化的覆盖掉为什么?

    初始化IO口为外部中断线的时候,比如GPIOA6与GPIOB6先后初始化为外部中断,最先初始化的会被后初始化的覆盖掉,不知道是为什么?
    发表于 05-14 08:26

    使用STM32CubeIDE初始化STM32407的SPI1(PB3)初始化失败的原因?怎么解决?

    使用STM32CubeIDE初始化STM32407的SPI1(PB3)初始化失败,有人知道原因吗?
    发表于 03-25 07:50

    字符型、指针型等变量等该如何初始化

     对于数值类型的变量往往初始化为0,但对于其他类型的变量,如字符型、指针型等变量等该如何初始化呢?
    的头像 发表于 03-18 11:02 1461次阅读

    MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

    GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行呢?如果顺序不当那初始化过程可能会出现短暂的电平跳变。
    的头像 发表于 02-22 11:07 1539次阅读
    MCU单片机GPIO<b class='flag-5'>初始化</b>该按什么顺序配置?为什么<b class='flag-5'>初始化</b>时有电平跳变?

    串口初始化一般是初始化哪些内容

    串口初始化是指在使用串口进行数据通信之前,对串口进行一系列的设置和配置,以确保串口能够正常工作。串口初始化的内容主要包括以下几个方面: 串口硬件设置:首先,需要确定要使用的串口是哪一个
    的头像 发表于 01-04 09:39 3192次阅读

    labview运行后如何初始化

    LabVIEW是一款强大的图形编程软件,在运行之前通常需要进行一些初始化操作。本文将详细介绍LabVIEW运行前的初始化过程,并提供了一些常用的初始化方法。 创建新项目: 在LabV
    的头像 发表于 12-28 17:24 2657次阅读