esp8266 RTOS SDK3.1之NVS使用

介绍了NVS(非易失性存储),它以数据库键值对形式读写数据,比直接操作Flash地址更安全。给出了读取和写入数据的封装函数,强调使用前要初始化NVS,还提及可替换数据类型及数组、结构体存储读取函数,源代码放于github。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值