ESP32 IDF 写入与读取nvs案例
时间: 2025-01-01 08:40:07 浏览: 14
ESP32的IDF (Espressif IoT Development Framework) 提供了一个强大的Non-Volatile Storage (NVS) API,用于存储数据,尤其是在无电源或断电状态下保留信息。以下是使用NVS进行写入和读取的基本步骤:
**写入数据:**
```cpp
#include <esp_nvs.h>
void save_data(const char* key, const char* value) {
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
// 如果磁盘已满或版本升级,则先擦除旧数据
nvs_erase_all();
}
ret = nvs_set_string(nvs_handle, key, value); // nvs_handle通常在程序启动时初始化
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to write data to NVS with error %d", ret);
} else {
ESP_LOGI(TAG, "Data saved to NVS key '%s'", key);
}
}
```
**读取数据:**
```cpp
void read_data(const char* key) {
esp_err_t ret;
char value[64];
nvs_get_string(nvs_handle, key, value, sizeof(value)); // 获取字符串值
if (ret == ESP_OK) {
ESP_LOGI(TAG, "Read value from NVS key '%s': '%s'", key, value);
} else if (ret == ESP_ERR_NVS_NOT_FOUND) {
ESP_LOGW(TAG, "Key '%s' not found in NVS", key);
} else {
ESP_LOGE(TAG, "Failed to read data from NVS with error %d", ret);
}
}
```
**相关问题--:**
1. NVS的数据是如何持久化的?
2. ESP32 IDF的NVS与Flash存储有何区别?
3. 如何检查NVS是否存在特定键之前再尝试读取?
阅读全文