ESP-IDF 例程——存储

14. storage 目录

14.1 nvs/nvs_rw_value 例程

字段 描述
例程名称 nvs/nvs_rw_value
所在文件夹路径 examples\storage\nvs\nvs_rw_value
核心功能说明 演示如何使用ESP-IDF的NVS(Non-Volatile Storage)组件读写键值对数据。实现了整数和字符串类型的读写操作,以及键的查找和删除功能。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- nvs_flash_init():初始化NVS
- nvs_open():打开NVS命名空间
- nvs_set_i32():写入整数
- nvs_get_i32():读取整数
- nvs_set_str():写入字符串
- nvs_get_str():读取字符串
- nvs_erase_key():删除键
- nvs_commit():提交更改
- nvs_close():关闭NVS句柄
输入输出参数说明 输入:
- 要写入的整数和字符串值(硬编码在程序中)

输出:
- 读取到的整数和字符串值
- 操作结果状态信息
适用场景及典型应用案例 适用于:
- 学习NVS的基本使用方法
- 开发需要存储配置信息的应用
- 保存设备状态和计数器
- 存储简单的键值对数据
- 作为NVS应用的参考模板

14.2 fatfs/getting_started 例程

字段 描述
例程名称 fatfs/getting_started
所在文件夹路径 examples\storage\fatfs\getting_started
核心功能说明 演示如何使用FATFS组件在SPI Flash上实现FAT文件系统。实现了文件系统的挂载、文件的打开、写入、读取和关闭,以及文件系统的卸载。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_fat_spiflash_mount():挂载FAT文件系统
- fopen():打开文件
- fwrite():写入文件
- fread():读取文件
- fclose():关闭文件
- esp_vfs_fat_spiflash_unmount():卸载FAT文件系统
输入输出参数说明 输入:
- 要写入的字符串”Hello World!”(硬编码在程序中)

输出:
- 写入成功的状态
- 读取到的字符串
- 文件系统操作的日志信息
适用场景及典型应用案例 适用于:
- 学习FATFS的基本使用方法
- 开发需要文件系统支持的应用
- 存储大量数据和文件
- 实现可与电脑兼容的文件系统
- 作为FATFS应用的参考模板

14.3 littlefs 例程

字段 描述
例程名称 littlefs
所在文件夹路径 examples\storage\littlefs
核心功能说明 演示如何使用LittleFS文件系统在SPI Flash上存储数据。实现了LittleFS的初始化、挂载、文件读写、目录操作和卸载功能。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_littlefs_register():注册LittleFS
- esp_vfs_littlefs_unregister():注销LittleFS
- littlefs_info():获取LittleFS信息
- 标准C文件操作函数(fopen, fwrite, fread, fclose等)
输入输出参数说明 输入:
- 要写入的文件内容

输出:
- 文件读写结果
- LittleFS使用情况
- 目录列表
适用场景及典型应用案例 适用于:
- 学习LittleFS文件系统的使用
- 开发需要高效文件系统的应用
- 存储配置文件和资源文件
- 物联网设备的本地数据存储
- 作为LittleFS应用的参考模板

14.4 spiffs 例程

字段 描述
例程名称 spiffs
所在文件夹路径 examples\storage\spiffs
核心功能说明 演示如何使用SPIFFS(SPI Flash File System)在SPI Flash上实现文件系统。实现了SPIFFS的挂载、文件读写、目录操作和卸载功能。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_spiffs_register():注册SPIFFS
- esp_vfs_spiffs_unregister():注销SPIFFS
- esp_spiffs_info():获取SPIFFS信息
- 标准C文件操作函数(fopen, fwrite, fread, fclose等)
输入输出参数说明 输入:
- 要写入的文件内容

输出:
- 文件读写结果
- SPIFFS使用情况
- 目录列表
适用场景及典型应用案例 适用于:
- 学习SPIFFS文件系统的使用
- 开发需要轻量级文件系统的应用
- 存储Web服务器的静态文件
- 物联网设备的本地数据存储
- 作为SPIFFS应用的参考模板

14.5 wear_levelling 例程

字段 描述
例程名称 wear_levelling
所在文件夹路径 examples\storage\wear_levelling
核心功能说明 演示如何使用ESP-IDF的wear_levelling组件实现Flash的磨损均衡。实现了基于磨损均衡的NVS-like键值存储,包括数据的写入、读取和删除。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- wl_mount():挂载磨损均衡分区
- wl_unmount():卸载磨损均衡分区
- nvs_open_from_partition():从磨损均衡分区打开NVS
- 标准NVS操作函数(nvs_set_i32, nvs_get_i32等)
输入输出参数说明 输入:
- 要写入的键值对数据

输出:
- 读取到的数据
- 磨损均衡状态信息
适用场景及典型应用案例 适用于:
- 学习Flash磨损均衡的原理和使用
- 开发需要频繁写入Flash的应用
- 延长Flash寿命的设备
- 物联网设备的长期数据存储
- 作为磨损均衡应用的参考模板

14.6 custom_flash_driver 例程

字段 描述
例程名称 custom_flash_driver
所在文件夹路径 examples\storage\custom_flash_driver
核心功能说明 演示如何实现自定义Flash驱动,用于支持非标准Flash芯片或特殊的Flash操作。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- 自定义Flash驱动实现
- 引导加载程序组件
- 芯片驱动组件
输入输出参数说明 输入:
- Flash操作参数

输出:
- Flash操作结果
- 驱动初始化状态
适用场景及典型应用案例 适用于:
- 学习自定义Flash驱动的实现
- 支持特殊Flash芯片
- 开发需要特殊Flash操作的应用
- 作为Flash驱动开发的参考模板

14.7 emmc 例程

字段 描述
例程名称 emmc
所在文件夹路径 examples\storage\emmc
核心功能说明 演示如何使用eMMC(嵌入式多媒体卡)存储设备,支持不同总线宽度的eMMC操作。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- eMMC初始化和配置函数
- eMMC读写操作函数
- 支持1线、4线和8线eMMC模式
输入输出参数说明 输入:
- eMMC配置参数

输出:
- eMMC初始化状态
- 读写操作结果
- 设备信息
适用场景及典型应用案例 适用于:
- 学习eMMC存储设备的使用
- 开发需要大容量存储的应用
- 多媒体设备的存储解决方案
- 作为eMMC应用的参考模板

14.8 fatfs/ext_flash 例程

字段 描述
例程名称 fatfs/ext_flash
所在文件夹路径 examples\storage\fatfs\ext_flash
核心功能说明 演示如何在外部Flash上使用FATFS文件系统,实现外部存储的文件管理。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_fat_spiflash_mount():挂载FAT文件系统
- 标准C文件操作函数
- 外部Flash驱动
输入输出参数说明 输入:
- 外部Flash配置

输出:
- 文件系统挂载状态
- 文件操作结果
适用场景及典型应用案例 适用于:
- 学习在外部Flash上使用FATFS
- 开发需要扩展存储的应用
- 多媒体文件存储
- 作为外部Flash存储的参考模板

14.9 fatfs/fatfsgen 例程

字段 描述
例程名称 fatfs/fatfsgen
所在文件夹路径 examples\storage\fatfs\fatfsgen
核心功能说明 演示如何使用fatfsgen工具生成FAT文件系统镜像,并在运行时挂载和使用。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_fat_spiflash_mount():挂载FAT文件系统
- 标准C文件操作函数
输入输出参数说明 输入:
- 预生成的FAT文件系统镜像

输出:
- 文件系统挂载状态
- 文件操作结果
适用场景及典型应用案例 适用于:
- 学习fatfsgen工具的使用
- 开发需要预加载文件的应用
- 嵌入式系统的资源文件存储
- 作为文件系统镜像生成的参考模板

14.10 fatfs/fs_operations 例程

字段 描述
例程名称 fatfs/fs_operations
所在文件夹路径 examples\storage\fatfs\fs_operations
核心功能说明 演示FATFS文件系统的各种操作,包括文件读写、目录操作、文件属性管理等。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_fat_spiflash_mount():挂载FAT文件系统
- 标准C文件操作函数(fopen, fwrite, fread, fclose等)
- 目录操作函数(opendir, readdir, closedir等)
输入输出参数说明 输入:
- 文件操作参数

输出:
- 文件操作结果
- 目录列表
- 文件属性信息
适用场景及典型应用案例 适用于:
- 学习FATFS文件系统的高级操作
- 开发需要复杂文件操作的应用
- 文件管理系统
- 作为文件系统操作的参考模板

14.11 nvs/nvs_bootloader 例程

字段 描述
例程名称 nvs/nvs_bootloader
所在文件夹路径 examples\storage\nvs\nvs_bootloader
核心功能说明 演示如何在引导加载程序中使用NVS,实现引导加载程序配置和数据存储。
主要调用的内部/外部函数或模块 - 引导加载程序钩子函数
- NVS操作函数
- 加密相关函数
输入输出参数说明 输入:
- 引导加载程序配置

输出:
- NVS操作结果
- 引导加载状态
适用场景及典型应用案例 适用于:
- 学习在引导加载程序中使用NVS
- 开发需要引导加载程序配置的应用
- 安全启动和加密应用
- 作为引导加载程序NVS使用的参考模板

14.12 nvs/nvs_console 例程

字段 描述
例程名称 nvs/nvs_console
所在文件夹路径 examples\storage\nvs\nvs_console
核心功能说明 提供NVS命令行界面,允许用户通过控制台命令管理NVS数据,包括读写、删除和列出键值对。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- 控制台命令注册和处理
- NVS操作函数
输入输出参数说明 输入:
- 控制台命令和参数

输出:
- 命令执行结果
- NVS数据信息
适用场景及典型应用案例 适用于:
- 学习NVS的命令行管理
- 开发调试工具
- 现场配置和维护
- 作为NVS调试工具的参考模板

14.13 nvs/nvs_iteration 例程

字段 描述
例程名称 nvs/nvs_iteration
所在文件夹路径 examples\storage\nvs\nvs_iteration
核心功能说明 演示如何遍历NVS中的所有键值对,实现NVS数据的枚举和管理。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- nvs_open():打开NVS命名空间
- nvs_get_blob():读取blob数据
- nvs_entry_find():查找NVS条目
- nvs_entry_next():获取下一个NVS条目
输入输出参数说明 输入:
- NVS命名空间

输出:
- 遍历到的键值对
- NVS条目信息
适用场景及典型应用案例 适用于:
- 学习NVS条目的遍历
- 开发NVS数据管理工具
- 数据备份和恢复
- 作为NVS遍历操作的参考模板

14.14 nvs/nvs_rw_blob 例程

字段 描述
例程名称 nvs/nvs_rw_blob
所在文件夹路径 examples\storage\nvs\nvs_rw_blob
核心功能说明 演示如何使用NVS存储和读取二进制大对象(blob)数据,如结构体、数组等。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- nvs_flash_init():初始化NVS
- nvs_open():打开NVS命名空间
- nvs_set_blob():写入blob数据
- nvs_get_blob():读取blob数据
- nvs_commit():提交更改
- nvs_close():关闭NVS句柄
输入输出参数说明 输入:
- 要写入的blob数据(结构体、数组等)

输出:
- 读取到的blob数据
- 操作结果状态信息
适用场景及典型应用案例 适用于:
- 学习NVS存储blob数据
- 开发需要存储复杂数据结构的应用
- 配置信息存储
- 传感器数据缓存
- 作为NVS blob操作的参考模板

14.15 nvs/nvs_rw_value_cxx 例程

字段 描述
例程名称 nvs/nvs_rw_value_cxx
所在文件夹路径 examples\storage\nvs\nvs_rw_value_cxx
核心功能说明 演示如何在C++代码中使用NVS读写键值对数据,展示C++接口的使用方法。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- C++版NVS操作函数
- 标准C++库
输入输出参数说明 输入:
- 要写入的整数和字符串值

输出:
- 读取到的整数和字符串值
- 操作结果状态信息
适用场景及典型应用案例 适用于:
- 学习C++中使用NVS
- 开发C++应用
- 现代C++项目的配置存储
- 作为C++ NVS使用的参考模板

14.16 nvs/nvs_statistics 例程

字段 描述
例程名称 nvs/nvs_statistics
所在文件夹路径 examples\storage\nvs\nvs_statistics
核心功能说明 演示如何获取NVS的统计信息,包括使用情况、条目数量、碎片率等。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- nvs_flash_init():初始化NVS
- nvs_open():打开NVS命名空间
- nvs_get_stats():获取NVS统计信息
输入输出参数说明 输入:
- NVS命名空间

输出:
- NVS使用情况
- 条目数量
- 碎片率
- 存储容量
适用场景及典型应用案例 适用于:
- 学习NVS统计信息的获取
- 开发NVS监控工具
- 系统诊断和调试
- 作为NVS统计的参考模板

14.17 nvs/nvsgen 例程

字段 描述
例程名称 nvs/nvsgen
所在文件夹路径 examples\storage\nvs\nvsgen
核心功能说明 演示如何使用nvsgen工具生成NVS分区镜像,并在运行时读取预加载的NVS数据。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- nvs_flash_init():初始化NVS
- nvs_open():打开NVS命名空间
- 标准NVS操作函数
输入输出参数说明 输入:
- 预生成的NVS分区镜像

输出:
- 读取到的NVS数据
- 操作结果状态信息
适用场景及典型应用案例 适用于:
- 学习nvsgen工具的使用
- 开发需要预加载配置的应用
- 批量设备配置
- 作为NVS镜像生成的参考模板

14.18 partition_api/partition_find 例程

字段 描述
例程名称 partition_api/partition_find
所在文件夹路径 examples\storage\partition_api\partition_find
核心功能说明 演示如何使用分区API查找和识别Flash分区,包括按名称、类型和子类型查找分区。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_partition_find_first():查找第一个匹配的分区
- esp_partition_find():查找所有匹配的分区
- esp_partition_get_info():获取分区信息
输入输出参数说明 输入:
- 分区查找参数(类型、子类型、名称)

输出:
- 找到的分区信息
- 分区数量
适用场景及典型应用案例 适用于:
- 学习分区API的使用
- 开发需要动态分区管理的应用
- 系统诊断工具
- 作为分区查找的参考模板

14.19 partition_api/partition_mmap 例程

字段 描述
例程名称 partition_api/partition_mmap
所在文件夹路径 examples\storage\partition_api\partition_mmap
核心功能说明 演示如何使用分区API将Flash分区映射到内存,实现直接内存访问。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_partition_find_first():查找分区
- esp_partition_mmap():映射分区到内存
- esp_partition_munmap():解除内存映射
输入输出参数说明 输入:
- 分区名称或类型

输出:
- 映射的内存地址
- 映射状态
- 读取的数据
适用场景及典型应用案例 适用于:
- 学习分区内存映射
- 开发需要快速访问Flash数据的应用
- 资源文件加载
- 作为内存映射的参考模板

14.20 partition_api/partition_ops 例程

字段 描述
例程名称 partition_api/partition_ops
所在文件夹路径 examples\storage\partition_api\partition_ops
核心功能说明 演示如何使用分区API对Flash分区进行读写操作,包括扇区擦除、数据写入和读取。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_partition_find_first():查找分区
- esp_partition_erase_range():擦除分区范围
- esp_partition_write():写入数据
- esp_partition_read():读取数据
输入输出参数说明 输入:
- 要写入的数据

输出:
- 操作结果状态
- 读取到的数据
适用场景及典型应用案例 适用于:
- 学习分区API的基本操作
- 开发直接操作Flash的应用
- 自定义文件系统
- 作为分区操作的参考模板

14.21 parttool 例程

字段 描述
例程名称 parttool
所在文件夹路径 examples\storage\parttool
核心功能说明 演示如何使用parttool工具管理Flash分区,包括分区表读取、修改和验证。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- parttool Python脚本
- 分区表操作函数
输入输出参数说明 输入:
- 分区操作命令

输出:
- 分区表信息
- 操作结果状态
适用场景及典型应用案例 适用于:
- 学习parttool工具的使用
- 开发分区管理工具
- 系统维护和调试
- 作为分区管理的参考模板

14.22 perf_benchmark 例程

字段 描述
例程名称 perf_benchmark
所在文件夹路径 examples\storage\perf_benchmark
核心功能说明 提供存储性能基准测试,包括SPI Flash、SD卡等存储设备的读写速度测试。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- 性能测试函数
- 存储设备操作函数
- 时间测量函数
输入输出参数说明 输入:
- 测试配置参数

输出:
- 读写速度测试结果
- 延迟统计
- 性能分析报告
适用场景及典型应用案例 适用于:
- 学习存储性能测试方法
- 评估存储设备性能
- 优化存储相关应用
- 作为性能测试的参考模板

14.23 sd_card/sdmmc 例程

字段 描述
例程名称 sd_card/sdmmc
所在文件夹路径 examples\storage\sd_card\sdmmc
核心功能说明 演示如何使用SDMMC(安全数字多媒体卡)接口操作SD卡,支持不同总线宽度的SD卡操作。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- SDMMC初始化和配置函数
- SD卡读写操作函数
- 支持1线和4线SDMMC模式
输入输出参数说明 输入:
- SDMMC配置参数

输出:
- SD卡初始化状态
- 读写操作结果
- 设备信息
适用场景及典型应用案例 适用于:
- 学习SDMMC接口的使用
- 开发需要大容量存储的应用
- 多媒体文件存储
- 数据备份和日志记录
- 作为SD卡应用的参考模板

14.24 sd_card/sdspi 例程

字段 描述
例程名称 sd_card/sdspi
所在文件夹路径 examples\storage\sd_card\sdspi
核心功能说明 演示如何使用SPI接口操作SD卡,提供一种更灵活的SD卡连接方式。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- SDSPI初始化和配置函数
- SD卡读写操作函数
- SPI总线配置
输入输出参数说明 输入:
- SDSPI配置参数

输出:
- SD卡初始化状态
- 读写操作结果
- 设备信息
适用场景及典型应用案例 适用于:
- 学习SDSPI接口的使用
- 开发需要SD卡但没有SDMMC接口的应用
- 灵活的硬件设计
- 作为SDSPI应用的参考模板

14.25 semihost_vfs 例程

字段 描述
例程名称 semihost_vfs
所在文件夹路径 examples\storage\semihost_vfs
核心功能说明 演示如何使用半主机(semihosting)功能,实现目标设备与主机之间的文件系统共享。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_semihost_register():注册半主机VFS
- 标准C文件操作函数
输入输出参数说明 输入:
- 主机文件路径

输出:
- 文件操作结果
- 读取到的文件内容
适用场景及典型应用案例 适用于:
- 学习半主机功能的使用
- 开发和调试阶段的文件访问
- 主机与目标设备的文件共享
- 作为半主机VFS的参考模板

14.26 spiffsgen 例程

字段 描述
例程名称 spiffsgen
所在文件夹路径 examples\storage\spiffsgen
核心功能说明 演示如何使用spiffsgen工具生成SPIFFS文件系统镜像,并在运行时挂载和使用。
主要调用的内部/外部函数或模块 - app_main():程序入口函数
- esp_vfs_spiffs_register():注册SPIFFS
- 标准C文件操作函数
输入输出参数说明 输入:
- 预生成的SPIFFS文件系统镜像

输出:
- 文件系统挂载状态
- 文件操作结果
适用场景及典型应用案例 适用于:
- 学习spiffsgen工具的使用
- 开发需要预加载文件的应用
- 嵌入式系统的资源文件存储
- 作为SPIFFS镜像生成的参考模板

ESP-IDF 例程——存储
https://blog.zhaosn.top/ESP32-examples/14.storage/
作者
Zhao SN
发布于
2026年1月21日
更新于
2026年2月28日
许可协议