- 首先说一下ESP8266和ESP32 nvs的handle在声明的时候有些区别:
- ESP8266 RTOS中是:
nvs_handle my_handle;
- ESP32的esp-idf中是:
nvs_handle_t my_handle;
- 在
components/nvs_flash/include/nvs.h
中NVS_DEFAULT_PART_NAME
宏定义如下
#define NVS_DEFAULT_PART_NAME "nvs"
- 然后默认的
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);
}
- 所以如果需要自定义分区名称,在必要的函数中替换
NVS_DEFAULT_PART_NAME
即可