备注
当前文档对应的版本为 ESP-IDF v5.5.0
NVS rw value 示例
示例说明
本示例展示如何在 ESP32 上初始化并配置 NVS,对单个整数值或字符串值进行读写操作,并检测操作结果是否成功。通过该示例,开发者可以学习 NVS 的初始化流程、基本读写方法及结果验证方式。
运行方法
示例完整代码见 nvs_rw_value 示例。运行前的项目构建及烧录步骤详见示例目录下的 README.md 文件。
头文件说明
本示例所使用的头文件涵盖了标准库、FreeRTOS、系统控制与日志、以及 NVS 存储等功能模块,构建了任务调度、系统运行管理、调试信息输出和非易失性数据读写的核心功能,为应用的运行与持久化存储提供完整支撑。
各头文件按功能分类如下:
标准库功能:提供基础的输入输出功能和整数类型支持,用于打印调试信息以及跨平台保证整数精度。
#include <stdio.h>
#include <inttypes.h>
系统与日志:提供系统级 API 与日志输出功能,用于芯片信息获取、系统控制以及运行时调试。
#include "esp_system.h"
#include "esp_log.h"
FreeRTOS:提供实时操作系统的核心定义和任务管理接口,用于多任务创建、调度与控制。
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
非易失性存储:提供非易失性存储的初始化与访问接口,用于存储和读取持久化数据。
#include "nvs_flash.h"
#include "nvs.h"
结构体/全局常量说明
结构体类型定义:定义了一个结构体 type_str_pair_t
,用于建立 NVS 数据类型与字符串表示之间的映射关系,包含两个成员:
type
用于存放 NVS 数据类型枚举值。
str
用于存放对应类型的字符串描述。
全局常量:用于简化类型与字符串转换的处理逻辑,并且保证遍历时的安全性与可读性。
定义一个只读的静态数组
type_str_pair[]
,内容是各个 NVS 数据类型及其对应字符串。常用于打印、调试或根据类型选择不同的处理逻辑。定义
TYPE_STR_PAIR_SIZE
,用于存放type_str_pair[]
数组的元素个数,避免手动计算长度,常用于遍历数组。
任务函数说明
该示例定义了一个工具函数 type_to_str()
,用于将 NVS 数据类型枚举值 (nvs_type_t
) 转换为对应的字符串表示,以便在打印日志或调试时,更直观地显示数据类型。
调用该函数时需传入待转换的枚举值,其执行逻辑为:
遍历全局常量数组
type_str_pair[]
。将当前元素的
type
与传入参数进行比较。如果匹配成功,则返回该元素对应的字符串
str
。如果遍历结束仍未找到匹配项,则返回
"Unknown"
,表示该类型未定义或不在映射表中。
主函数说明
该函数作为程序入口,演示了在 ESP32 上使用 NVS(非易失性存储)进行初始化、读写、查询和删除操作的完整流程。通过此示例,开发者可以学习 NVS 的初始化、数据操作以及错误处理方法。
以下为函数的主要实现步骤,鉴于大部分流程已在 通用步骤 中详细介绍,可查看文档中 NVS 通用步骤 小节的对应标题。对于重复内容此处不再赘述,仅重点说明本示例中的关键实现与差异部分。
NVS 初始化
打开 NVS 句柄
命名空间为
"storage"
。
整数值读写
读取整数值后通过返回值判断读取状态,并打印相应日志。
字符串读写
读取字符串值后通过返回值判断读取状态,并打印相应日志。
查询 NVS 键值
获取键值对信息后,调用工具函数
type_to_str()
将存储项的类型转换为可读字符串,并结合键名一起打印日志,方便调试和查看 NVS 中的键值信息。
删除 NVS 键值
提交更改