非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。
NVS 通过调用 spi_flash_{read|write|erase}
API 对主 flash 的部分空间进行读、写、擦除操作,包括 data
类型和 nvs
子类型的所有分区。应用程序可调用 nvs_open
API 选择使用带有 nvs
标签的分区,也可以通过调用 nvs_open_from_part
API 选择使用指定名称的任意分区。
NVS 的操作对象为键值对,其中键是 ASCII 字符串,当前支持最大键长为 15 个字符,值可以为以下几种类型:
? 整数型:uint8_t
、int8_t
、uint16_t
、int16_t
、uint32_t
、int32_t
、uint64_t
和 int64_t
;
? 以 \0
结尾的字符串;
? 可变长度的二进制数据 (BLOB)
*注:字符串值当前上限为 4000 字节,其中包括空终止符。BLOB 值上限为 508,000 字节或分区大小减去 4000 字节的 97.6%,以较低值为准。
键必须唯一。为现有的键写入新的值可能产生如下结果:
? 如果新旧值数据类型相同,则更新值;
? 如果新旧值数据类型不同,则返回错误。
读取值时也会执行数据类型检查。如果读取操作的数据类型与该值的数据类型不匹配,则返回错误。
原文:https://www.cnblogs.com/zy-cnblogs/p/13301330.html