ESP32 IDF非揮発性ストレージ(NVS)ライブラリは、キー価値ペアをフラッシュに保存するように設計されています。
1。機能
2。ESP32NVS
3。基本的な使用法
4。始めましょう
5。例
6。寄稿
7。ライセンス
NVSはキー価値のペアで動作します。キーはASCII文字列で、最大キーの長さは現在15文字です。値は次のタイプのいずれかを持つことができます。
NVSは、各キー値ペアを名前空間の1つに割り当てます。名前空間名は、キー名と同じルールに従います。つまり、最大長は15文字です。さらに、1つの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ボードのシリアルポート名に置き換えます。また、Baudを必要なボーレートに置き換えることにより、フラッシャーボーレートを変更することもできます。デフォルトのボーレートは460800です。
idf . py - p < PORT > monitorポートをシリアルポート名に置き換えることを忘れないでください。
詳細プロジェクトの構築方法:ESP-IDFプログラミングガイド。
このプロジェクトには、タスクモニターライブラリの機能を紹介する例が含まれています。この例は、NVS APIを使用して、独自のアプリケーションでNVSとの間でデータを書き込み/読み取る方法の実用的なデモを提供します。
ESP32 NVSプロジェクトへの貢献は大歓迎です。バグが見つかったり、機能リクエストがある場合は、プロジェクトのGitHubページに問題を送信してください。コードを提供したい場合は、プルリクエストを送信してください。
ESP32 NVSプロジェクトは、MITライセンスの下でライセンスされています。詳細については、MITライセンスファイルを参照してください。