gpt4 book ai didi

c++ - 指向结构变量的指针未保存到 eeprom

转载 作者:行者123 更新时间:2023-11-30 02:13:49 24 4
gpt4 key购买 nike

我有一些代码可以将配置数据存储到 EEPROM。变量配置中的数据可以打印到串行控制台,但不能保存到 EEPROM。我正在使用 ESP32(Arduino 框架)。以下代码是此 link 中代码的简化版本.

#include <Arduino.h>
#include <EEPROM.h>

#define config_ver "VER01"

typedef struct {
char version[10];
int settings;
} configuration_type;

configuration_type configuration = {config_ver,50};

void saveconfig() {
Serial.println("Saving configuration!!");
for(int i=0; i < sizeof(configuration); i++) {
char data = *((char*)&configuration + i);
Serial.print(data); //<----- Prints fine
EEPROM.write(i,data); //<----- Problem!!
}
Serial.println();
}

void setup() {
Serial.begin(115200);
saveconfig();

Serial.println("Fetching EEPROM..!");
for(int i = 0; i <= 20; i++) {
Serial.print(EEPROM.read(i));
}
Serial.println("\n");
}

void loop() {

}

输出:

Saving configuration!!
VER01␀␀␀␀␀␀␀2␀␀␀ <--- prints fine!!
Fetching EEPROM..!
000000000000000000000 <--- Not saving to eeprom

最佳答案

ESP32 没有 EEPROM。这只是闪存中的仿真。您需要提交更改以将它们从 RAM 移动到闪存。

在写入初始化 EEPROM 仿真之前,添加具有适当大小的 EEPROM.begin(EEPROM_SIZE)

在写入后添加 EEPROM.commit() 以将写入提交到闪存。

引用官方例子: https://github.com/espressif/arduino-esp32/blob/master/libraries/EEPROM/examples/eeprom_write/eeprom_write.ino

请注意,EEPROM 已弃用。请改用首选项库。

参见 https://github.com/espressif/arduino-esp32/tree/master/libraries/EEPROM

关于c++ - 指向结构变量的指针未保存到 eeprom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58815292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com