#include <ESP32eeprom.h>
#include <EEPROM.h>
void writeFloatArrayToEEPROM(float array[][2], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
byte bytes[sizeof(float)];
memcpy(bytes, &array[i][j], sizeof(float));
int offset = (i * cols + j) * sizeof(float);
for (int k = 0; k < sizeof(float); k++) {
EEPROM.write(offset + k, bytes[k]);
}
}
}
}
void readFloatArrayFromEEPROM(float array[][2], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int offset = (i * cols + j) * sizeof(float);
byte bytes[sizeof(float)];
for (int k = 0; k < sizeof(float); k++) {
bytes[k] = EEPROM.read(offset + k);
}
memcpy(&array[i][j], bytes, sizeof(float));
}
}
}
void bubbleSort2DArrayRows(float arr[][2], int n) {
float temp,temp1;
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j][0] > arr[j+1][0]) {
temp = arr[j][0];
temp1= arr[j][1];
arr[j][0] = arr[j+1][0];
arr[j][1] = arr[j+1][1];
arr[j+1][0] = temp;
arr[j+1][1] = temp1;
}
}
}
}
void eeprom_config() {
float myArray[5][2] = {{1.1, 2.2}, {3.3, 4.4},{8.8,9.4},{6.6,6.3},{9.5,6.5}};
bubbleSort2DArrayRows(myArray, 5);
writeFloatArrayToEEPROM(myArray, 5, 2);
memset(myArray, 0, sizeof(myArray));
readFloatArrayFromEEPROM(myArray, 5, 2);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 2; j++) {
Serial.print(myArray[i][j]);
Serial.print("\t");
}
Serial.println();
}
}
void ESP32EEPRON_INIT()
{
const int eeprom_size = 1024;
Serial.begin(9600);
if (!EEPROM.begin(eeprom_size))
{
Serial.println("初始化 EEPROM 失败!");
while (1)
{
delay(1000);
}
}
eeprom_config();
EEPROM.end();
}
#ifndef ESP32EEPROM_H
#define ESP32EEPROM_H
void ESP32EEPRON_INIT();
void eeprom_config();
#endif