ESP32-C3模组上跑通NVS(5)

2024-06-08 06:44
文章标签 esp32 模组 c3 nvs

本文主要是介绍ESP32-C3模组上跑通NVS(5),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接前一篇文章:ESP32-C3模组上跑通NVS(4)

本文内容参考:

非易失性存储库 - ESP32 - — ESP-IDF 编程指南 latest 文档

ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)_esp入门教学-CSDN博客

【ESP-IDF】介绍NVS_esp-idf是什么-CSDN博客

《ESP-IDF入门指南》----->nvs_flash(非易失性存储库)_esp nvs flash-CSDN博客

12-ESP32-S3 的 NVS(Non-Volatile Storage)_esp32-s3 nvs-CSDN博客

特此致谢!

二、NVS常用函数

14. nvs_set_i8函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_i8 (nvs_handle_t handle, const char* key, int8_t value);
  • 函数功能

为给定键设置int8_t值。

根据键的名称设置键的值。注意,在调用nvs_commit之前,不会更新实际存储。不管键值对是被创建还是被更新。函数总是需要至少一个nvs可用条目。参见nvs_get_stats。

创建操作类型后,可用条目的数量将减少一个;更新操作类型后,可用条目的数量保持不变。

  • 函数参数

handle:从nvs_open函数获得的句柄。无法使用以只读方式打开的句柄。

key:键名。最大长度为(NVS_KEY_NAME_MAX_SIZE-1)(15)个字符。不应该是空的。

value:要设置的值。

  • 函数返回值

ESP_OK —— 值设置成功。

ESP_FAIL —— 存在内部错误;很可能是由于NVS分区损坏(仅当NVS断言检查被禁用时)。

ESP_ERR_NVS_INVALID_HANDLE —— 句柄已关闭或为NULL。

ESP_ERR_NVS_READ_ONLY —— 存储句柄以只读方式打开。

ESP_ERR_NVS_INVALID_NAME —— 键名称不满足约束。

ESP_ERR_NVS_NOT_ENOUGH_SPACE —— 底层存储中没有足够的空间来保存值。

ESP_ERR_NVS_REMOVE_FAILED —— 值未更新,因为闪存写入操作失败。然而,该值已写入,并且更新将在重新初始化nvs后完成,前提是闪存操作不会再次失败。

15. nvs_set_u8 函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_u8 (nvs_handle_t handle, const char* key, uint8_t value);
  • 函数功能

为给定的键设置uint8_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

16. nvs_set_i16函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_i16 (nvs_handle_t handle, const char* key, int16_t value);
  • 函数功能

为给定的键设置int16_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

17. nvs_set_u16函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_u16 (nvs_handle_t handle, const char* key, uint16_t value);
  • 函数功能

为给定的键设置uint16_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

18. nvs_set_i32函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_i32 (nvs_handle_t handle, const char* key, int32_t value);
  • 函数功能

为给定的键设置int32_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

19. nvs_set_u32函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_u32 (nvs_handle_t handle, const char* key, uint32_t value);
  • 函数功能

为给定的键设置uint32_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

20. nvs_set_i64函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_i64 (nvs_handle_t handle, const char* key, int64_t value);
  • 函数功能

为给定的键设置int64_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

21. nvs_set_u64函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_u64 (nvs_handle_t handle, const char* key, uint64_t value);
  • 函数功能

为给定的键设置uint64_t值。

除了数据类型之外,此函数与nvs_set_i8相同。

22. nvs_set_str函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_str (nvs_handle_t handle, const char* key, const char* value);
  • 函数功能

为给定键设置字符串。

设置键的字符串值。函数需要整个空间,以便新数据可以作为同一nvs页面中的连续条目使用。操作消耗1个开销条目,并且每32个新字符串(包括要设置的零字符)消耗1个条目。

在对现有键进行值更新的情况下,由以前的值和开销条目占用的条目将返回到可用条目的池中。

注意:

1)长字符串值的存储可能会由于nvs页面的碎片而失败,即使nvs_get_stats返回的available_entries表明有足够的总体可用空间。

2)在调用nvs_commit之前,不会更新基础存储。

  • 函数参数

handle:从nvs_open函数获得的句柄。无法使用以只读方式打开的句柄。

key:键名。最大长度为(NVS_KEY_NAME_MAX_SIZE-1)(15)个字符。不应该是空的。

value:要设置的值。对于字符串,如果有一个完整的页面可供写入,则最大长度(包括空字符)为4000字节。然而,如果自由空间是碎片化的,此最大长度会减少。

  • 函数返回值

ESP_OK —— 值设置成功。

ESP_FAIL —— 存在内部错误;很可能是由于NVS分区损坏(仅当NVS断言检查被禁用时)。

ESP_ERR_NVS_INVALID_HANDLE —— 句柄已关闭或为NULL。

ESP_ERR_NVS_READ_ONLY —— 存储句柄以只读方式打开。

ESP_ERR_NVS_INVALID_NAME —— 键名称不满足约束。

ESP_ERR_NVS_NOT_ENOUGH_SPACE —— 底层存储中没有足够的空间来保存值。

ESP_ERR_NVS_REMOVE_FAILED —— 值未更新,因为闪存写入操作失败。然而,该值已写入,并且更新将在重新初始化nvs后完成,前提是闪存操作不会再次失败。

ESP_ERR_NVS_VALUE_TOO_LONG —— 字符串值太长。

23. nvs_set_blob函数

  • 函数原型

components\components\nvs_flash\include\nvs.h中:

esp_err_t nvs_set_blob(nvs_handle_t handle, const char* key, const void* value, size_t length);
  • 函数功能

为给定键设置可变长度二进制值。

设置键的可变长度二进制值。函数使用2个开销和1个条目,每个条目来自可用条目池中的32字节新数据。参见nvs_get_stats。

在现存密钥的值更新的情况下,现有值和2个开销项所占用的空间将返回到可用项的池中。

注意:在调用nvs_commit之前,不会更新基础存储。

  • 函数参数

handle:从nvs_open函数获得的句柄。无法使用以只读方式打开的句柄。

key:键名。最大长度为(NVS_KEY_NAME_MAX_SIZE-1)(15)个字符。不应该是空的。

value:要设置的值。

length:要设置的二进制值的长度,以字节为单位;最大长度为508000字节或(分区大小的97.6%-4000)字节,以较低者为准。

  • 函数返回值

ESP_OK —— 值设置成功。

ESP_FAIL —— 存在内部错误;很可能是由于NVS分区损坏(仅当NVS断言检查被禁用时)。

ESP_ERR_NVS_INVALID_HANDLE —— 句柄已关闭或为NULL。

ESP_ERR_NVS_READ_ONLY —— 存储句柄以只读方式打开。

ESP_ERR_NVS_INVALID_NAME —— 键名称不满足约束。

ESP_ERR_NVS_NOT_ENOUGH_SPACE —— 底层存储中没有足够的空间来保存值。

ESP_ERR_NVS_REMOVE_FAILED —— 值未更新,因为闪存写入操作失败。然而,该值已写入,并且更新将在重新初始化nvs后完成,前提是闪存操作不会再次失败。

ESP_ERR_NVS_VALUE_TOO_LONG —— 值太长。

本文中的各函数对应于前文(ESP32-C3模组上跑通NVS(1)-CSDN博客)提到的如下内容:

 更多函数介绍请看下回。

这篇关于ESP32-C3模组上跑通NVS(5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041445

相关文章

摄像头模组介绍和技术指标

1 手机摄像头概述 1.1 手机摄像头概述  手机的数码相机功能指的是手机是否可以通过内置或是外接的数码相机进行拍摄静态图片或短片拍摄,作为手机的一项新的附加功能,手机的数码相机功能得到了迅速的发展。 手机摄像头分为内置与外置,内置摄像头是指摄像头在手机内部,更方便。外置手机通过数据线或者手机下部接口与数码相机相连,来完成数码相机的一切拍摄功能。 外置数码相机的优点在于可以减轻手机的重

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]

前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32+VSCODE环境搭建。 安装ESP32-IDF https://dl.espressif.cn/dl/esp-idf/?idf=4.4 直接复制上面链接,进入idf下载界面。

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688,功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算,可支持 16 路高清视频实时分析,灵活应对图像、语音、自然语言等场景,可集成于智算服务器、边缘智算盒、工控机、无人机、AIOT等多种类型产品。 Banana

Class4——Esp32|Thonny两种方式同过电脑控制LED灯,路由器与电脑自带热点连接ESP32

上一节我们通过路由器和设备创建了连接,不懂可按上节配置 Class3——Esp32|Thonny——网络连接主机-wifi连接(源代码带教程)-CSDN博客文章浏览阅读57次。Esp32|Thonny网络连接主机-wifi连接(源代码带教程)https://blog.csdn.net/m0_66701835/article/details/141960572?spm=1001.2014.3001

移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证

近日,移远通信宣布,其基于高通QCM6490平台打造的高端5G智能模组SG560D-NA顺利通过PTCRB认证。 在此之前,该模组还获得了美国FCC和加拿大IC认证,这意味着,其已完全满足北美地区的相关标准和规定,能够支持相关智能设备在该区域高效稳定运行,助力客户快速开拓北美市场。 高端5G,性能领航 SG560D-NA基于高通QCM6490平台开发,搭载高性能八

物联网之ESP32控制舵机、通过网页设置舵机角度、Web服务、舵机原理、接线、Arduino、WiFi、Http

MENU 前言原理硬件电路设计软件程序设计LEDC输出PWM信号使用第三方库控制舵机网页控制舵机 前言 舵机在电子产品中非常常见,比如四足机器人、固定翼航模等都有应用,因此学习舵机对电子制作非常有意义。本文章使用Arguino的PWM对SG90舵机旋转角度控制。 原理 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机只

英伟达本月启动RTX 5080/90预案 600W散热模组推进中

据供应链最新消息称,英伟达将在本月开始RTX 5090、5080的宣传预案,而AIC合作伙伴会陆续收到相关资料。按照消息人士的说法,英伟达将在明年1月的CES大会上,正式发布RTX 5090、5080等重磅显卡。 按照散热模组厂商的说法,面向英伟达显卡的600W散热模组方案正持续推进,而400W功耗方案目前处于取消或搁置状态,此外目前共有5个英伟达显卡散热方案正在开发中。 这似乎也从侧面印证

乐鑫 ESP32-P4 无线连接解决方案

ESP32-P4 是乐鑫信息科技推出的一款功能强大的芯片 (SoC) ,专为高性能的应用打造。尽管 ESP32-P4 集成了一系列先进特性,但它并未设置无线连接功能,因此需要额外的连接方案来满足嵌入式系统的多样化需求。乐鑫为 ESP32-P4 提供了三种主要的连接方案:ESP-AT、ESP-Hosted 和 ESP-Extconn。下面我们来探讨每种解决方案的优势、限制和使用场景。 ESP-AT

ESP32!Thonny+MicroPython+ESP32开发环境搭建!!

准备工具: Thonny+MicroPython+ESP32 一.Thonny安装 下载地址:Thonny, Python IDE for beginnershttps://thonny.org/ 二.下载esp32环境——根据型号下载 下载地址:MicroPython - Python for microcontrollershttps://micropython.org/downlo

鹏程万里------esp32 开发编译和烧录

首先编译demo 打开C:\msys32目录下的mingw32.exe然后执行下面的操作 DZ0012+Administrator@DZ0012 MINGW32 ~ # cd .. DZ0012+Administrator@DZ0012 MINGW32 /home # ls Administrator DZ0012+Administrator@DZ0012 MINGW32 /home #