ESP8266和ESP32的nvs操作自定义分区

  1. 首先说一下ESP8266和ESP32 nvs的handle在声明的时候有些区别:
  • ESP8266 RTOS中是:nvs_handle my_handle;
  • ESP32的esp-idf中是:nvs_handle_t my_handle;
  1. components/nvs_flash/include/nvs.hNVS_DEFAULT_PART_NAME宏定义如下
#define NVS_DEFAULT_PART_NAME               "nvs"   /*!< Default partition name of the NVS
  1. 然后默认的
extern "C" esp_err_t nvs_flash_init(void)
{
    return nvs_flash_init_partition(NVS_DEFAULT_PART_NAME);
}

extern "C" esp_err_t nvs_open(const char* name, nvs_open_mode_t open_mode, nvs_handle_t *out_handle)
{
    return nvs_open_from_partition(NVS_DEFAULT_PART_NAME, name, open_mode, out_handle);
}
  1. 所以如果需要自定义分区名称,在必要的函数中替换NVS_DEFAULT_PART_NAME即可