备注
当前文档对应的版本为 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 键值
提交更改