NVS入门(基于ESP-IDF)

NVS入门(基于ESP-IDF)怎么理解 NVS 非易失性存储库 其实可以把它与我们的电脑磁盘做类比

大家好,欢迎来到IT知识分享网。

1.概述

2.NVS使用(以Wi-Fi账号密码为例)

2.1打开NVS

nvs_flash_init(); //打开时需要输入一个命名空间 、状态和一个句柄 char* namespace ="namespace"; nvs_handle_t handle; nvs_open(namespace, NVS_READWRITE, handle); 

2.2存储数据

//定义一个结构体存储账号密码 typedef struct{ char ssid[50]; char password[50]; }ap_t; ap_t aps_set; //将准备好的账号密码复制进来 strcpy(aps_set.ssid,"wifi_ssid"); strcpy(aps_set.ssid,"wifi_password"); //往NVS存储数据,这个API需要输入handle、key、value和大小 nvs_set_blob(handel, "ap", aps_set, sizeof(aps_set)); 

2.3读取数据

//定义一个结构体存储账号密码 typedef struct{ char ssid[50]; char password[50]; }ap_t; ap_t aps_set; //从NVS获取数据,这个API需要输入handle、key、value和大小的指针 size_t length = sizeof(aps_set); nvs_get_blob(handel, "ap", aps_set, &length ); 

2.4关闭NVS

//关闭时需要输入一个句柄 nvs_close(handle); nvs_flash_deinit(); 

3.迭代器

迭代器简单说就是可以罗列出所有键值对

// Example of listing all the key-value pairs of any type under specified partition and namespace nvs_iterator_t it = NULL; esp_err_t res = nvs_entry_find(<nvs_partition_name>, <namespace>, NVS_TYPE_ANY, &it); while(res == ESP_OK) { nvs_entry_info_t info; nvs_entry_info(it, &info); // Can omit error check if parameters are guaranteed to be non-NULL printf("key '%s', type '%d' \n", info.key, info.type); res = nvs_entry_next(&it); } nvs_release_iterator(it); 

4.获取状态信息

可以查看有多少Entry和空余Entry,案例如下

// Example of nvs_get_stats() to get the number of used entries and free entries: nvs_stats_t nvs_stats; nvs_get_stats(NULL, &nvs_stats); printf("Count: UsedEntries = (%d), FreeEntries = (%d), AllEntries = (%d)\n", nvs_stats.used_entries, nvs_stats.free_entries, nvs_stats.total_entries); 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137644.html

(0)
上一篇 2025-06-18 20:45
下一篇 2025-06-18 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信