【已解决】关于nvs_get_str读数据串经常失败的问题
Posted: Wed Mar 22, 2023 3:43 am
版本V5.0.1,我利用了NVS保存了WiFI的密码和账号,但是我发现经常读不成功地。我看了一下例程,我发现例程只是读某一个BYTE的数据,nvs_get_u8 例如这个读BYTE的接口,是正确的。多次读写都容易成功。但是利用 nvs_get_str 这个读字符串,经常读不出来的,会经常报一个错误 (ESP_ERR_NVS_INVALID_LENGTH)。但是神奇的是,我只要在读前面加上判断,利用printf输出某些信息,然后调用 nvs_get_str 就能读成功,估计这个接口有BUG。你们可以试试。(PS:我曾经尝试在读之前加了延时函数。发现没什么用。)
esp_err_t err;
err = nvs_open("storage", NVS_READWRITE, &my_handle);
if( err != ESP_OK )
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
else
printf("Flash_Write_str open flash succes.\n");
esp_err_t err;
err = nvs_open("storage", NVS_READWRITE, &my_handle);
if( err != ESP_OK )
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
else
printf("Flash_Write_str open flash succes.\n");