第一步:初始化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表,不需要提交数据