接前一篇文章:ESP32-C3模组上跑通NVS(3)
本文内容参考:
非易失性存储库 - ESP32 - — ESP-IDF 编程指南 latest 文档
ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)_esp入门教学-CSDN博客
【ESP-IDF】介绍NVS_esp-idf是什么-CSDN博客
《ESP-IDF入门指南》----->nvs_flash(非易失性存储库)_esp nvs flash-CSDN博客
12-ESP32-S3 的 NVS(Non-Volatile Storage)_esp32-s3 nvs-CSDN博客
特此致谢!
二、NVS常用函数
11. nvs_find_key函数
- 函数原型
components\components\nvs_flash\include\nvs.h中:
esp_err_t nvs_find_key(nvs_handle_t handle, const char* key, nvs_type_t* out_type);
- 函数功能
查找具有给定键名的键值对。
注意:如果找到了键,函数可以指示健的存在以及NVS条目的数据类型。
- 函数参数
handle:使用nvs_open获得的存储句柄。
key:键名称。最大长度为(NVS_KEY_NAME_MAX_SIZE-1)(16-1)个字符。不应该是空的。
out_type:指向输出变量的指针,找到密钥时,该变量由NVS条目的数据类型填充。可能为NULL,则不提供相应的数据类型。
- 函数返回值
ESP_OK —— 找到提供的键的NVS条目。
ESP_ERR_NVS_NOT_FOUND —— 请求的键不存在。
ESP_ERR_NVS_INVALID_HANDLE —— 句柄已关闭或为NULL。
ESP_FAIL —— 存在内部错误;很可能是由于NVS分区损坏(仅当NVS断言检查被禁用时)
。
12. nvs_erase_key函数
- 函数原型
components\components\nvs_flash\include\nvs.h中:
esp_err_t nvs_erase_key(nvs_handle_t handle, const char* key);
- 函数功能
擦除具有给定键名称的键值对。
注意:在调用nvs_commit函数之前,实际存储可能不会更新。
- 函数参数
handle:使用nvs_open获得的存储句柄。无法使用以只读方式打开的句柄。
key:键名。最大长度为(NVS_KEY_NAME_MAX_SIZE-1)(16-1)个字符。不应为空。
- 函数返回值
ESP_OK —— 擦除操作成功。
ESP_FAIL —— 存在内部错误;很可能是由于NVS分区损坏(仅当NVS断言检查被禁用时)。
ESP_ERR_NVS_INVALID_HANDLE —— 句柄已关闭或为NULL。
ESP_ERR_NVS_READ_ONLY —— 句柄以只读方式打开。
ESP_ERR_NVS_NOT_FOUND —— 如果请求的键不存在。
13. nvs_get_stats函数
- 函数原型
components\components\nvs_flash\include\nvs.h中:
esp_err_t nvs_get_stats(const char *part_name, nvs_stats_t *nvs_stats);
- 函数功能
填充结构nvs_stats_t。其提供有关nvs使用的内存的信息。
此函数计算分区中已使用的条目数、空闲条目数、可用条目数、总条目数和命名空间数。
- 代码示例
nvs_get_stats()示例,用于获取数据项的实际统计信息概述:
nvs_stats_t nvs_stats;
nvs_get_stats(NULL, &nvs_stats);
printf("Count: UsedEntries = (%lu), FreeEntries = (%lu), AvailableEntries = (%lu), AllEntries = (%lu)\n",nvs_stats.used_entries, nvs_stats.free_entries, nvs_stats.available_entries, nvs_stats.total_entries);
- 函数参数
part_name:分区表中的分区名称NVS。如果传递NULL,则将使用NVS_DEFAULT_PART_NAME(“NVS”)。
nvs_stats:返回填充的结构nvs_states_t。它提供有关分区中已使用的内存的信息。
- 函数返回值
ESP_OK —— 更改已成功写入。将填充返回参数nvs_stats。
ESP_ERR_NVS_PART_NOT_FOUND —— 没有找到标签为“name”的分区。返回参数nvs_stats将填充0。
ESP_ERR_NVS_NOT_INITIALIZED —— 存储驱动程序未初始化。返回参数nvs_stats将填充0。
ESP_ERR_INVALID_ARG —— nvs_stats等于NULL。
ESP_ERR_INVALID_STATE —— 存在状态为INVALID的页面。返回参数nvs_stats将不使用正确的值填充,因为并非所有页面都将被计数。计数将在第一个无效页面中断。
更多函数介绍请看下回。