NVS總的來說,就是非易失性存儲,類似MCU EEPROM,但實際上調用ESP32這些函數,數據是存儲在FLASH中的。
它的管理方式類似數據庫的表,在NVS里面可以存儲很多個不同的表,每個表下面有不同的鍵值,每個鍵值可以存儲8位,
16位,32位等等不同的數據類型,但不能是浮點數。
NVS相關API使用方法如下:
(1)初始化
調用“nvs_flash_init();”,如果失敗可調用“nvs_flash_erase()”擦除NVS,然后再次初始化。
(2)打開一個表
nvs_open("List", NVS_READWRITE, &my_handle);
這個API第一個形參為一個字符串,可稱為表名。第二個是讀寫模式,可選讀寫或者只讀,第三個是當前打開的表的句柄。
如此聲明:“nvs_handle my_handle; ”。后面對表里面的鍵值進行讀寫,都需要輸入鍵值所在表的句柄。
(3)讀寫
讀:
vs_get_i8(my_handle, "nvs_i8", &nvs_i8);
讀寫不同的數據類型需要調用不同的API,類似的API有:“nvs_get_i16”,“nvs_get_u32”等等
形參方面,第一個是表的句柄,第二個是鍵值,第三個則是對應的變量的指針,如“nvs_i8”是個“int8_t”類型的變量。
寫:
nvs_set_i8(my_handle, "nvs_i8", nvs_i8);
基本跟讀差不多,注意的是第三個形參變成了對應的變量,而不是變量的指針。
(4)提交與關閉
提交:
nvs_commit(my_handle);
關閉:
nvs_close(my_handle);
