问题

在使用ESP32-CAM 进行EEPROM的存储时,发现一直无法存储EEPROM,电源没有断开的时候没有问题,一旦断开电源数据就丢失了

代码

代码很简单,这个put函数是一个模板函数,看源码也是没有什么问题的,不知道因为什么原因,这个使用自定义的struct时掉电就是无法存储

  1. EEPROM.put(0, config)
  2. template<typename T>
  3. const T &put(int address, const T &t) {
  4. if (address < 0 || address + sizeof(T) > _size)
  5. return t;
  6. memcpy(_data + address, (const uint8_t*) &t, sizeof(T));
  7. _dirty = true;
  8. return t;
  9. }

根源

暂时没找到,网上也是不清不楚的

解决

更换函数 writeBytes 记得用完后要提交

    EEPROM.writeBytes(0, (void *)&config, sizeof(config));
    EEPROM.commit();