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

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

本文内容参考:

非易失性存储库 - 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常用函数

11. nvs_find_key函数

  • 函数原型

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

esp_err_t nvs_find_key(nvs_handle_t handle, const char* key, nvs_type_t* out_type);
  • 函数功能

查找具有给定键名的键值对。

注意:如果找到了键,函数可以指示健的存在以及NVS条目的数据类型。

  • 函数参数

handle:使用nvs_open获得的存储句柄。

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

out_type:指向输出变量的指针,找到密钥时,该变量由NVS条目的数据类型填充。可能为NULL,则不提供相应的数据类型。

  • 函数返回值

ESP_OK —— 找到提供的键的NVS条目。

ESP_ERR_NVS_NOT_FOUND —— 请求的键不存在。

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

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

12. nvs_erase_key函数

  • 函数原型

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

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

擦除具有给定键名称的键值对。

注意:在调用nvs_commit函数之前,实际存储可能不会更新。

  • 函数参数

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

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

  • 函数返回值

ESP_OK —— 擦除操作成功。

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

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

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

ESP_ERR_NVS_NOT_FOUND —— 如果请求的键不存在。

13. nvs_get_stats函数

  • 函数原型

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

esp_err_t nvs_get_stats(const char *part_name, nvs_stats_t *nvs_stats);
  • 函数功能

填充结构nvs_stats_t。其提供有关nvs使用的内存的信息。

此函数计算分区中已使用的条目数、空闲条目数、可用条目数、总条目数和命名空间数。

  • 代码示例

nvs_get_stats()示例,用于获取数据项的实际统计信息概述:

nvs_stats_t nvs_stats;
nvs_get_stats(NULL, &nvs_stats);
printf("Count: UsedEntries = (%lu), FreeEntries = (%lu), AvailableEntries = (%lu), AllEntries = (%lu)\n",nvs_stats.used_entries, nvs_stats.free_entries, nvs_stats.available_entries, nvs_stats.total_entries);
  • 函数参数

part_name:分区表中的分区名称NVS。如果传递NULL,则将使用NVS_DEFAULT_PART_NAME(“NVS”)。

nvs_stats:返回填充的结构nvs_states_t。它提供有关分区中已使用的内存的信息。

  • 函数返回值

ESP_OK —— 更改已成功写入。将填充返回参数nvs_stats。

ESP_ERR_NVS_PART_NOT_FOUND —— 没有找到标签为“name”的分区。返回参数nvs_stats将填充0。

ESP_ERR_NVS_NOT_INITIALIZED —— 存储驱动程序未初始化。返回参数nvs_stats将填充0。

ESP_ERR_INVALID_ARG —— nvs_stats等于NULL。

ESP_ERR_INVALID_STATE —— 存在状态为INVALID的页面。返回参数nvs_stats将不使用正确的值填充,因为并非所有页面都将被计数。计数将在第一个无效页面中断。

更多函数介绍请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 启用指令缓存 HAL_ICACHE_Enable

函数在 STM32 的 HAL(硬件抽象层)库中通常用于启用指令缓存(I-Cache)。以下是该函数的主要功能: 启用指令缓存: 当调用 HAL_ICACHE_Enable 函数时,STM32 的 Cortex-M 处理器(特别是…

ElementUI的Table组件在无数据情况下让“暂无数据”文本居中显示

::v-deep .el-table__empty-block {width: 100%;min-width: 100%;max-width: 100%; }

如何在npm上发布自己的包

如何在npm上发布自己的包 npm创建自己的包 一、一个简单的创建 1、创建npm账号 官网:https://www.npmjs.com/创建账号入口:https://www.npmjs.com/signup 注意:需要进入邮箱验证 2、创建目录及初始化 $ mkdir ufrontend-test $ cd ufron…

今日科普:了解、预防、控制高血压

高血压,常被称为“隐形的健康威胁”,许多患者可能在毫无预警的情况下发病,且患病率逐年攀升,同时患者群体逐渐年轻化,高血压虽然难以根治,但并不可怕,真正可怕的是血压长期居高不下,…

STM32(七):ADC电位检测 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。这篇文章我们来介绍一下如何用STM32单片机中ADC进行电位检测,并发送到XCOM串口中显示。 一、实验原理 1.ADC模数转换的介绍 首先,我们先介绍一下AD模数模块&#…

arcpy批量导出图且图名为shp属性值

1.打开arcmap加载需要导出的图。需求是逐村显示“村界内图斑”并导出为图,在导出每个村时不显示周围的村和“村界内图斑” 2.arcmap上方空白处右键打开“数据驱动页面” 3.在“数据驱动页面”工具条点击第一个图标,打开“设置数据驱动页面” 4.在“设置…

Oracle触发器的用途

0.DDL和DML DDL:data manipulation language,数据操作语言,主要命令有select,update,insert,delete,主要用于对数据库中的数据进行操作 DDL:data definition language,数据定义语言,主要命令有create,alter&#xff…

Spring (40)Spring Cloud和Spring Boot

Spring Boot和Spring Cloud是两个在现代Java应用开发中广泛使用的项目,它们共同构成了创建云原生、微服务架构应用的强大基础。虽然它们紧密协作,但服务于不同的目的。下面,我们将深入探讨它们之间的关系,结合源码和代码示例来进行…

Java1.8全套家政上门服务+springboot+ mysql +Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码

Java1.8全套家政上门服务springboot mysql Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码 家政预约上门小程序的实用性? 家政预约上门小程序的实用性主要体现在以下几个方面: 一、方便快捷的预约体验&#…

尚硅谷2024新版3小时速通Docker教程

尚硅谷2024新版3小时速通Docker教程 百度网盘:https://pan.baidu.com/s/1SncgHbdJehvZspjcrrbLSw?pwd6c27

【数据结构与算法 经典例题】随机链表的复制(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、代码实现 1. 原链表中节点的数据拷…

采用JWT令牌和Filter进行登录拦截认证

原理描述: 1、第一次登录的时候,生成JWT令牌,并JWT令牌存放在localStorage。 localStorage.setItem(token, token); 2、每次通过axios发送请求的时候,都将这个令牌获取,并放于header中发送。 也就是JWT令牌只在登录…

PCL 抛物线回归拟合(Quadratic,二维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里仍然是最小二乘法的应用,其推导过程如下所述: 1.二次函数模型: 其中,a、b 和 c 是需要确定的参数。 2.最小二乘法 假设我们有一组数据点 ( x 1 ​ , y

大数据平台技术选型

大数据平台的技术选型是一个复杂的过程,需要考虑多种因素,如数据量、数据类型、处理速度、成本预算、团队技术能力以及未来扩展性等。以下是大数据平台技术选型的一些关键方面和常用技术: 1. 数据存储 Hadoop HDFS (Hadoop Distributed Fil…

实用软件分享---中医自学宝典(安卓)

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

#03 初探Stable Diffusion:理解其工作原理

文章目录 前言什么是Stable Diffusion?Stable Diffusion的核心组件1. 变分自编码器(VAE)2. Transformer模型3. 高分辨率图像合成 工作流程示例应用结论 前言 Stable Diffusion已成为AI图像生成领域的一颗新星,其能力在于根据文本提示生成高…

usb设备在主机和VMWare虚拟机中切换连接

操作:点击菜单栏虚拟机(M)>可移动设备>选择自己的usb设备>连接(断开与 主机 的连接)

【Vue】路由介绍

一、引入 思考 单页面应用程序,之所以开发效率高,性能好,用户体验好 最大的原因就是:页面按需更新 比如当点击【发现音乐】和【关注】时,只是更新下面部分内容,对于头部是不更新的 要按需更新&#xff…

上海亚商投顾:沪指震荡下跌 两市成交不足7000亿元

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,创业板指冲高回落。车路云概念股持续活跃,万通智控、鸿泉物联、华体…

【Vue】异步更新 $nextTick

文章目录 一、引出问题二、解决方案三、代码实现 一、引出问题 需求 编辑标题, 编辑框自动聚焦 点击编辑,显示编辑框让编辑框,立刻获取焦点 即下图上面结构隐藏,下面结构显示,并且显示的时候让它自动聚焦。 代码如下 问题 “…