esp8266 RTOS SDK3.1之NVS使用

NVS顾名思义Non-volatile storage,即非易失性存储,它是以数据库键值对形式来读取和写入数据,相较于直接操作Flash地址,写入和读取数据更加安全,下面是我对读取和写入数据进行封装的两个函数
读取数据函数:

/*
读取NVS函数
参数:
table NVS数据库
user 要读取参数的键
return:读取参数 uint16类型
 */
uint16_t mNVS_read(char* table,char* user)
{
    nvs_handle mHandleNvsRead;		//NVS操作句柄
    uint16_t nvs_u16 = 0; 
    nvs_open(table, NVS_READONLY, &mHandleNvsRead); //打开NVS的table数据库
    nvs_get_u16(mHandleNvsRead, user, &nvs_u16);	//获取user键所对应的值
    nvs_close(mHandleNvsRead); //关闭NVS
    return nvs_u16;
}

写入数据函数:

/*
写入NVS函数
参数:
table NVS数据库
user 要写入数据的键
writedata :写入数据
 */

void mNVS_write(char* table,char* user,uint16_t writedata)
{
     nvs_handle mHandleNvswrite;		//NVS操作句柄
     nvs_open(table, NVS_READWRITE, &mHandleNvswrite);//打开NVS的table数据库
     nvs_set_u16(mHandleNvswrite,user,writedata);//写入 user键的值
     nvs_commit(mHandleNvswrite); //提交数据
     nvs_close(mHandleNvswrite);//关闭NVS
}

注意,在使用NVS之前一定要初始化NVS

 nvs_flash_init(); //初始化NVS

其中的nvs_get_u16和nvs_set_u16函数可以换成自己想要的数据类型,具体可以看nvs.h文件,对于数组和结构体存储和读取,使用nvs_set_blob和nvs_get_blob函数。
源代码放在这了我的github

你可能感兴趣的:(esp8266)