ESP32_NVS
Release 1.0.0
ESP32 IDF非易失性存儲(NVS)庫旨在將鍵值對存儲在Flash中。
1。功能
2。 ESP32NVS
3。基本用法
4。入門
5。示例
6。貢獻
7.許可
NVS以鍵值對運行。鍵是ASCII字符串,最大密鑰長度當前為15個字符。值可以具有以下類型之一:
NVS將每個鍵值對分配給一個名稱空間之一。名稱名稱遵循與關鍵名稱相同的規則,即,最大長度為15個字符。此外,一個NVS分區中不得超過254個不同的名稱空間。
#include <stdlib.h>
#include "esp_check.h"
#include "esp_log.h"
#include "non_volatile_storage.h"
static const char * TAG = "app_main" ;
void app_main ( void )
{
ESP_ERROR_CHECK ( nvs_init ());
// Float
float write_float = 123456.789 ;
if ( nvs_write_float ( "namespace_1" , "key_1" , write_float ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write float to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write float to NVS" );
}
float read_float ;
if ( nvs_read_float ( "namespace_1" , "key_1" , & read_float ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read float from NVS: %f" , read_float );
} else {
ESP_LOGE ( TAG , "Failed to read float from NVS" );
}
// String
char * write_string = "Hello, World!" ;
if ( nvs_write_string ( "namespace_1" , "key_2" , write_string ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write string to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write string to NVS" );
}
char * read_string = NULL ;
if ( nvs_read_string ( "namespace_1" , "key_2" , & read_string ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read string from NVS: %s" , read_string );
} else {
ESP_LOGE ( TAG , "Failed to read string from NVS" );
}
// IMPORTANT NOTE!: This applies ONLY to strings. Remember to delete the pointer to avoid a memory leak.
free ( read_string );
// Blob
#define MAX_STRING_LENGTH 10
typedef struct {
char name [ MAX_STRING_LENGTH ];
uint32_t id ;
} person_t ;
const person_t write_blob = {
. name = "Joe" ,
. id = 123 ,
};
if ( nvs_write_blob ( "namespace_1" , "key_3" , & write_blob , sizeof ( person_t )) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write blob to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write blob to NVS" );
}
person_t read_blob = {};
if ( nvs_read_blob ( "namespace_1" , "key_3" , & read_blob , sizeof ( person_t )) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read blob from NVS: name:%s, id:%d" , read_blob . name , read_blob . id );
} else {
ESP_LOGE ( TAG , "Failed to read blob from NVS" );
}
}為了開始使用ESP32任務監視器項目,您將需要ESP32微控制器和運行Python的主機計算機。您還需要安裝ESP-IDF開發框架和所需的Python軟件包。
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash用ESP32板的串行端口名稱替換端口。您還可以通過用所需的波特率代替波特來更改閃光燈波特率。默認的波特率為460800。
idf . py - p < PORT > monitor不要忘記用串行端口名稱替換端口。
更多信息如何構建項目:ESP-IDF編程指南。
該項目包括一個顯示任務監視器庫功能的示例。此示例提供了有關如何使用NVS API在您自己的應用程序中使用NVS編寫/讀取數據的實用證明。
歡迎對ESP32 NVS項目的貢獻。如果您找到錯誤或有功能請求,請在項目的GitHub頁面上提交問題。如果您想撰寫代碼,請提交拉動請求。
ESP32 NVS項目已根據MIT許可獲得許可。有關更多信息,請參見MIT許可證文件。