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

    文章

    926

    浏览量

    80304
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184815
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    labview运行后如何初始化

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

    secondary cpu初始化状态设置

    ,用于填写secondary cpu的入口地址。 uboot负责将这块内存的地址写入devicetree中,当内核初始化完成,需要启动secondary cpu时,就将其内核入口地址写到那块内存
    的头像 发表于 12-05 15:27 337次阅读
    secondary cpu<b class='flag-5'>初始化</b>状态<b class='flag-5'>设置</b>

    AD7091r-4软件初始化失败怎么处理?

    我使用软件初始化时,发送66个脉冲后,芯片并没有执行初始化操作,配置寄存器和通道寄存器并没有被设置为默认值 当我使用软件初始化时,在发送了66个脉冲后,芯片没有进行启动操作,配置登记
    发表于 12-01 06:31

    stm32f429捕获初始化里面有个滤波设置干嘛用的?

    stm32f429捕获初始化里面有个滤波设置干嘛用的,为什么测量脉宽还要滤波
    发表于 11-08 06:10

    设置IO口为输入如果不初始化速度会发生什么?

    设置IO口为输入如果不初始化速度会发生什么
    发表于 10-16 14:30

    SD卡初始化及读取程序

    电子发烧友网站提供《SD卡初始化及读取程序.pdf》资料免费下载
    发表于 10-13 09:50 2次下载
    SD卡<b class='flag-5'>初始化</b>及读取程序

    STM32只初始化SPIMOSI不初始化SPICLK可以用吗?

    STM32只初始化SPIMOSI,不初始化SPICLK,可以用么
    发表于 09-21 06:36

    rt-thread线程栈初始化参数分析

    RT-Thread 在线程初始化的代码内有一段初始化线程堆栈的代码
    的头像 发表于 08-14 16:50 992次阅读
    rt-thread线程栈<b class='flag-5'>初始化</b>参数分析

    CW32L083 RTC初始化设置

    介绍CW32L083的RTC初始化设置
    的头像 发表于 06-24 10:16 968次阅读
    CW32L083 RTC<b class='flag-5'>初始化</b><b class='flag-5'>设置</b>

    CPU CACHE策略的初始化

    build_mem_type_table()函数的功能是获取当前CPU的CACHE类型,据此初始化mem_type。
    的头像 发表于 06-05 15:03 882次阅读
    CPU CACHE策略的<b class='flag-5'>初始化</b>

    PyTorch教程6.4之惰性初始化

    电子发烧友网站提供《PyTorch教程6.4之惰性初始化.pdf》资料免费下载
    发表于 06-05 11:52 0次下载
    PyTorch教程6.4之惰性<b class='flag-5'>初始化</b>