请问NVS的初始化问题

wangshuoran
Posts: 37
Joined: Fri Dec 24, 2021 12:40 pm

请问NVS的初始化问题

Postby wangshuoran » Tue Apr 19, 2022 11:52 am

在WIFI初始化时,使用了nvs初始化:

```c
// Initialize NVS
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
```

但是有很多场景都会使用nvs,如果我仅仅在别处初始化一次,或者仅仅封装这个代码调用,就会报错。
请问是什么原因。

这里我把我简单封装贴在下面:
```c
// 下面的代码专门在一个文件中封装
void nvsInit(void) {
// Initialize NVS
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
}

// 下面的代码由wifi-demo的app_main调用
nvsInit();
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
wifi_init_sta();
```

我这样的封装就会报错,原因是什么?

wangshuoran
Posts: 37
Joined: Fri Dec 24, 2021 12:40 pm

Re: 请问NVS的初始化问题

Postby wangshuoran » Wed Apr 20, 2022 5:52 am

自问自答一下,nvs修改一次就够了,这个绝对是个人的问题

Who is online

Users browsing this forum: Google [Bot] and 75 guests