esp8266 freeRTOS 使用NVS 存储数据

第一步:初始化nvs

nvs_flash_init();

第二步:打开nvs表

flash是esp8266内部的一块存储空间,内部用很多表,每个表下面有多个键值对,数据是以键值对的形式存在的,存储的数据形式包括char int 数组,字符串,结构体等,不同的数据调用不同的api即可.

1,定义表名和键名和句柄nvs_handle,如

char *TABLE="table_int";

char *INT="int_data";

nvs_handle mnvs_handle;

句柄在nvs的写入和读取中有用,是必须的;

注意:名称不能是空的,且不能超过15个字节.

打开表

esp_err_t nvs_open(const char* name, nvs_open_mode open_mode, nvs_handle *out_handle);

name就是上面自己定义的TABLE,

out_handle 就是mnvs_handle;

此api会创建一个名为name的表,可用out_handle来操作;

写入字符串数据

char * msg="hello nvs";

esp_err_t nvs_set_str (nvs_handle handle, const char* key, const char* value);

handle为上面的mnvs_handle

key就是上面的定义的INT,

value就是要写入的数据的首地址,

提交数据,进行更新

esp_err_t nvs_commit(nvs_handle handle);

关闭nvs表

void nvs_close(nvs_handle handle);

以上的就是写入一个数据的过程

读取时将esp_err_t nvs_set_str (nvs_handle handle, const char* key, const char* value)换成

esp_err_t nvs_get_str (nvs_handle handle, const char* key, char* out_value, size_t* length)即可

然后直接关闭nvs表,不需要提交数据

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容