esp32 arduino中 将结构体写入FLASH中,可写入的flash大小设为10MB
时间: 2024-03-14 08:46:21 浏览: 16
在 ESP32 Arduino 中将结构体写入 FLASH 中,需要使用 Non-Volatile Storage (NVS) 库。但是,ESP32 芯片的 Flash 空间大小为 4MB,如果要扩展到 10MB,则需要外接 Flash 存储器。
以下是写入结构体到 NVS 的示例代码:
```C++
#include <Preferences.h>
struct MyStruct {
int myInt;
float myFloat;
String myString;
};
void writeStructToNVS(MyStruct data) {
Preferences preferences;
preferences.begin("my-app", false);
preferences.putBytes("my-struct", &data, sizeof(data));
preferences.end();
}
MyStruct readStructFromNVS() {
Preferences preferences;
preferences.begin("my-app", true);
MyStruct data;
preferences.getBytes("my-struct", &data, sizeof(data));
preferences.end();
return data;
}
```
要扩展到 10MB,需要使用 SPIFFS 或 LittleFS 文件系统。这些文件系统允许将文件存储在外部 Flash 存储器中。以下是使用 LittleFS 存储结构体的示例代码:
```C++
#include "FS.h"
#include "LittleFS.h"
struct MyStruct {
int myInt;
float myFloat;
String myString;
};
void writeStructToFS(MyStruct data) {
LittleFS.begin();
File file = LittleFS.open("/my-struct", "w");
if (file) {
file.write((byte*)&data, sizeof(data));
file.close();
}
LittleFS.end();
}
MyStruct readStructFromFS() {
LittleFS.begin();
File file = LittleFS.open("/my-struct", "r");
MyStruct data;
if (file) {
file.read((byte*)&data, sizeof(data));
file.close();
}
LittleFS.end();
return data;
}
```
在这个示例中,文件名为 "/my-struct",可以在其他地方进行更改。注意,要使用 LittleFS,需要在 Arduino IDE 中安装相应的库。