标题: Arduino的EEPROM问题请教 [打印本页]

作者: BE1NG    时间: 2025-7-15 14:55
标题: Arduino的EEPROM问题请教
  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之后才会出现的。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1