1 Star 0 Fork 18

bcsvr.com/easyio-lib-for-esp32

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

32_NVS

例程简介

使用 FreeRTOSTask,创建两个任务:

  1. led_task ,控制LED闪烁

  2. nvs_storage_task ,初始化 NVS,来记录总开机次数。

主要用于在 flash 中存储键值格式的数据。很适合用来存储系统设置之类的变量。

乐鑫官方的NVS文档:ESP32 - NVS文档

NVS操作的存储对象:

键值对:

NVS 的操作对象为键值对,其中键是 ASCII 字符串,当前支持最大键长为 15 个字符,值可以为以下几种类型:

  • 整数型:uint8_tint8_tuint16_tint16_tuint32_tint32_tuint64_tint64_t

  • \0 结尾的字符串;

  • 可变长度的二进制数据 (BLOB)

键必须唯一。为现有的键写入新的值可能产生如下结果:

  • 如果新旧值数据类型相同,则更新值;

  • 如果新旧值数据类型不同,则返回错误。

命名空间:

为了减少不同组件之间键名的潜在冲突,NVS 将一组键值对分配给一个命名空间。命名空间的命名规则遵循键名的命名规则,即最多可占 15 个字符。命名空间的名称在调用 nvs_opennvs_open_from_part 中指定,调用后将返回一个不透明句柄,用于后续调用 nvs_get_*nvs_set_*nvs_commit 函数。这样,一个句柄关联一个命名空间,键名便不会与其他命名空间中相同键名冲突。请注意,不同 NVS 分区中具有相同名称的命名空间将被视为不同的命名空间。 (简单来说就是,不同应用,使用不同的命名空间,以避免不同组件之间键名的冲突。命名空间相当于文件夹,键值对相当于其中的文件)

Demo运行现象

  • LED闪烁。

  • 打开终端,ESP32上电运行后会打印烧录代码后的总开机次数

  • 保持连接终端,手动按ESP32开发板的RST复位按键,随着总开机次数(复位次数)增加,会看到 Restart counter递增。

关键函数

见乐鑫官方的NVS文档:ESP32 - NVS文档

注意事项

  • NVS只能存储键值对,只适合存储系统设置或者其他信息不多的应用。大文件的存储还是要靠文件系统。
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/bcsvr/easyio-lib-for-esp32.git
git@gitee.com:bcsvr/easyio-lib-for-esp32.git
bcsvr
easyio-lib-for-esp32
easyio-lib-for-esp32
master

搜索帮助