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