esp32 NVS库函数 介绍
时间: 2023-09-15 08:15:21 浏览: 92
ESP32的NVS(Non-Volatile Storage)库函数提供了一种持久化存储数据的方法,即使设备掉电或重新启动,数据也不会丢失。
NVS库函数主要包括以下功能:
1. 初始化NVS:可以初始化NVS分区,以便在使用NVS之前为其分配存储空间。
2. 打开NVS:可以打开NVS分区,以便读取和写入数据。
3. 读取NVS:可以从NVS中读取数据。
4. 写入NVS:可以将数据写入NVS中。
5. 删除NVS:可以删除NVS中的数据。
6. 关闭NVS:可以关闭NVS以释放资源。
NVS库函数的使用非常简单,以下是一个示例:
```
#include "nvs_flash.h"
void app_main()
{
// 初始化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
nvs_handle_t my_handle;
ret = nvs_open("storage", NVS_READWRITE, &my_handle);
if (ret != ESP_OK) {
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(ret));
} else {
printf("NVS handle opened successfully!\n");
// 写入NVS
int32_t value = 123456;
ret = nvs_set_i32(my_handle, "my_key", value);
if (ret != ESP_OK) {
printf("Error (%s) writing value!\n", esp_err_to_name(ret));
} else {
printf("Value written to NVS!\n");
// 读取NVS
int32_t read_value = 0;
ret = nvs_get_i32(my_handle, "my_key", &read_value);
switch (ret) {
case ESP_OK:
printf("Value read from NVS: %d\n", read_value);
break;
case ESP_ERR_NVS_NOT_FOUND:
printf("The value is not initialized yet!\n");
break;
default :
printf("Error (%s) reading value!\n", esp_err_to_name(ret));
}
// 关闭NVS
nvs_close(my_handle);
}
}
}
```
这个示例演示了如何初始化NVS、打开NVS、写入数据、读取数据、关闭NVS等操作。在实际使用中,可以根据需要进行相应的修改。
阅读全文