EEPROM读/写字节的自定义类

时间:2018-09-28 09:10:20

标签: c++ arduino avr

我无法使用以下类弄清楚如何对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。

有什么想法我做错了吗?

0 个答案:

没有答案