我无法使用以下类弄清楚如何对eeprom进行读写:
#include <avr/eeprom.h>
#include "myclass.hpp"
uint16_t arraySize = 0;
struct param {
char name[10];
char value[20];
};
std::vector<param> arrayOfParams;
std::vector<param>::iterator iterator;
MyClass::Myclass() {
read(0, &arraySize, sizeof(arraySize));
};
void MyClass::reset() {
arraySize = 0;
uint16_t addr = sizeof(arraySize);
write(0, &arraySize, addr);
uint8_t buffer[16];
memset(buffer, 0xFF, sizeof(buffer));
while(addr < 1024) {
eeprom_write_block(buffer, (void*)addr, sizeof(buffer));
addr += sizeof(buffer);
}
};
void MyClass::read(uint16_t from, void * result, uint16_t size) {
byte * b = (byte*)result;
for (uint16_t i = 0; i < size; i++) {
*b++ = eeprom_read_byte(from++);
}
};
void MyClass::write(uint16_t from, void * data, uint16_t size) {
const byte * b = (const byte*)data;
for(uint16_t i = 0; i < size; i++) {
eeprom_write_byte(from++, *b++);
}
};
目标是存储“控制字节”,其中包含结构主数组arrayOfParams的大小。 首先,脚本将值0x00之外的值写入控制字节空间。 然后拒绝编写主要结构arrayOfParams。
有什么想法我做错了吗?