标题:
Arduino的EEPROM问题请教
[打印本页]
作者:
BE1NG
时间:
2025-7-15 14:55
标题:
Arduino的EEPROM问题请教
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "GetTem.h"
#include "DisDig.h"
#include "Button.h"
#include "Globals.h"
#include "EEPROM.h"
#include "E2PROM.h"
KEYRETURN event;
float Value;
bool isFTemp = false;
//蓝牙现在最多只能发几十字节
void setup() {
htm1640_init(); //初始化
SensorInit();
ButtonInit();
init10msTimer();
EP_Init();
isFTemp = LoaderTemp();
FTempFlag = (isFTemp == 1) ? 1 : 0;
clear();
LedOff();
delay(50);
}
void loop()
{
Temp = GetTemperature();
Value = FTempFlag ? CTTransFT(Temp) : Temp;
ShowTemp(Value);
CheckTime();
PressOn();
}
void PressOn()
{
KEYRETURN Key = GetKeyvalue();
switch(Key)
{
case S_KEY:
// 处理短按事件
HandleAct();
if(LowLightFlag == 1)
{
setBrightness(1);
LowLightFlag = 0;
break;
}
TemperatureAct();
break;
case L_KEY:
// 处理长按5秒事件
HandleAct();
setBrightness(1);
FTempFlag = !FTempFlag;
SaveTemp(FTempFlag);
break;
default:
break;
}
}
#define EEPROM_SIZE 512
#define TEMP_ADDR 0
void EP_Init()
{
Serial.begin(9600);
EEPROM.begin(EEPROM_SIZE);
}
bool LoaderTemp()
{
byte UnitFlag = EEPROM.read(TEMP_ADDR);
return (UnitFlag == 1);
}
void SaveTemp(bool Unit)
{
EEPROM.write(TEMP_ADDR, Unit ? 1 : 0);
EEPROM.commit();
}
复制代码
各位大佬,我想请问一下为什么我使用EEPROM要存储温度单位标志时,在断电重新开机后会闪现出之前存储过的数据。这种情况是使用EEPROM之后才会出现的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1