ESP32_学习笔记(一)NVS的操作(存储和读取大数组)(为什么存入数据成功,读取却为零的原因)

本文是ESP32学习笔记的一部分,主要介绍了如何使用NVS进行数据存储和读取,特别是针对大数组操作。文章强调了在读取数据时长度参数的重要性,指出如果传入长度为零可能导致读取到的数据为零,并提供了解决方法,即先读取数据长度再进行读取操作。最后,给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ESP32_学习笔记(一)NVS的操作

前言

ESP32在RTOS3.0的环境下,拥有很多已经开发好的功能和组件供我们使用。NVS就是其中的一个。这么奇怪的名字其实就是我们原来的读写函数的抽象化,将原来的直接在地址上读写改为现在的通过系统来管理底层的存储,我们只需要像文件一样的写入和读出就行了,

函数介绍

创建句柄:

首先创建句柄用来操作。

nvs_handle_t nvs_handle;
定义存储空间:

存储空间是一个名字,用字符串表示:

#define STORAGE_NAMESPACE "storage"
打开函数:

esp_err_t nvs_open(const char* name, nvs_open_mode_t open_mode, nvs_handle_t *out_handle);
我们要实现NVS的存储,我们首先就需要打开一个存储空间。以上这个函数就是用来打开的函数。

存储函数:

下面的都是用来存储数据的函数:

esp_err_t nvs_set_i8  (nvs_handle_t handle, const char* key, int8_t value);
esp_err_t nvs_set_u8  (nvs_handle_t handle, const char* key, uint8_t value);
esp_err_t nvs_set_i16 (nvs_handle_t handle, const char* key, int16_t value);
esp_err_t nvs_set_u16 (nvs_handle_t handle, const char* key, uint16_t value);
esp_err_t nvs_set_i32 (nvs_handle_t handle, const char* key, int32_t value);
esp_err_t nvs_set_u32 (nvs_handle_t handle, const char* key, uint32_t value);
esp_err_t nvs_set_i64 (nvs_handle_t handle, const char* key, int64_t value);
esp_err_t nvs_set_u64 (nvs_handle_t handle, const char* key, uint64_t value);
esp_err_t nvs_set_str (nvs_handle_t handle, const char* key, const char* value);
//用来存储大二进制数据的函数(比如说结构体)
esp_err_t nvs_set_blob(nvs_handle_t handle, const char* key, const void* value, size_t length);
读取函数:
esp_err_t nvs_get_i8  (nvs_handle_t handle, const char* key, int8_t* out_value);
esp_err_t nvs_get_u8  (nvs_handle_t handle, const char* key, uint8_t* out_value);
esp_err_t nvs_get_i16 (nvs_handle_t handle, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值