找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3|回复: 0
打印 上一主题 下一主题
收起左侧

Arduino的EEPROM问题请教

[复制链接]
跳转到指定楼层
楼主
ID:1153341 发表于 2025-7-15 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <Arduino.h>
  2. #include <OneWire.h>
  3. #include <DallasTemperature.h>
  4. #include "GetTem.h"
  5. #include "DisDig.h"
  6. #include "Button.h"
  7. #include "Globals.h"
  8. #include "EEPROM.h"
  9. #include "E2PROM.h"

  10. KEYRETURN event;
  11. float Value;
  12. bool isFTemp = false;

  13. //蓝牙现在最多只能发几十字节
  14. void setup() {

  15.   htm1640_init();   //初始化

  16.   SensorInit();

  17.   ButtonInit();

  18.   init10msTimer();

  19.   EP_Init();

  20.   isFTemp = LoaderTemp();
  21.   FTempFlag = (isFTemp == 1) ? 1 : 0;

  22.   clear();
  23.   
  24.   LedOff();

  25.   delay(50);

  26. }

  27. void loop()
  28. {
  29.   
  30.   Temp = GetTemperature();
  31.   Value = FTempFlag ? CTTransFT(Temp) : Temp;
  32.   ShowTemp(Value);
  33.   CheckTime();
  34.   PressOn();
  35. }
  36. void PressOn()
  37. {
  38.     KEYRETURN Key = GetKeyvalue();

  39.     switch(Key)
  40.         {
  41.             case S_KEY:
  42.                 // 处理短按事件
  43.                 HandleAct();
  44.                 if(LowLightFlag == 1)
  45.                 {
  46.                     setBrightness(1);
  47.                     LowLightFlag = 0;
  48.                     break;
  49.                 }
  50.                 TemperatureAct();
  51.                 break;
  52.                
  53.             case L_KEY:
  54.                 // 处理长按5秒事件
  55.                 HandleAct();
  56.                 setBrightness(1);
  57.                 FTempFlag = !FTempFlag;

  58.                 SaveTemp(FTempFlag);
  59.                 break;
  60.                
  61.             default:
  62.                 break;
  63.         }
  64. }

  65. #define EEPROM_SIZE   512
  66. #define TEMP_ADDR     0
  67. void EP_Init()
  68. {
  69.   Serial.begin(9600);
  70.   EEPROM.begin(EEPROM_SIZE);
  71. }

  72. bool LoaderTemp()
  73. {
  74.   byte UnitFlag = EEPROM.read(TEMP_ADDR);

  75.   return (UnitFlag == 1);
  76. }

  77. void SaveTemp(bool Unit)
  78. {
  79.   EEPROM.write(TEMP_ADDR, Unit ? 1 : 0);
  80.   EEPROM.commit();  
  81. }
复制代码
各位大佬,我想请问一下为什么我使用EEPROM要存储温度单位标志时,在断电重新开机后会闪现出之前存储过的数据。这种情况是使用EEPROM之后才会出现的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表