NVS總的來講,就是非易失性存儲,相似MCU EEPROM,但實際上調用ESP32這些函數,數據是存儲在FLASH中的。數據庫
它的管理方式相似數據庫的表,在NVS裏面能夠存儲不少個不一樣的表,每一個表下面有不一樣的鍵值,每一個鍵值能夠存儲8位,函數
16位,32位等等不一樣的數據類型,但不能是浮點數。指針
NVS相關API使用方法以下:字符串
(1)初始化get
調用「nvs_flash_init();」,若是失敗可調用「nvs_flash_erase()」擦除NVS,而後再次初始化。flash
(2)打開一個表it
nvs_open("List", NVS_READWRITE, &my_handle);
這個API第一個形參爲一個字符串,可稱爲表名。第二個是讀寫模式,可選讀寫或者只讀,第三個是當前打開的表的句柄。變量
如此聲明:「nvs_handle my_handle; 」。後面對錶裏面的鍵值進行讀寫,都須要輸入鍵值所在表的句柄。List
(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);