Perpustakaan ESP32 IDF Non-Volatile Storage (NVS) dirancang untuk menyimpan pasangan nilai kunci dalam flash.
1. Fitur
2. ESP32 NVS
3. Penggunaan Dasar
4. Memulai
5. Contoh
6. berkontribusi
7. Lisensi
NVS beroperasi pada pasangan nilai kunci. Kunci adalah string ASCII, panjang kunci maksimum saat ini 15 karakter. Nilai dapat memiliki salah satu jenis berikut:
NVS menugaskan setiap pasangan nilai kunci ke salah satu ruang nama. Nama namespace mengikuti aturan yang sama dengan nama kunci, yaitu, panjang maksimum adalah 15 karakter. Selain itu, tidak ada lebih dari 254 ruang nama yang berbeda dalam satu partisi NVS.
#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" );
}
}Untuk memulai dengan Proyek Monitor Tugas ESP32, Anda akan memerlukan mikrokontroler ESP32 dan komputer host yang menjalankan Python. Anda juga harus menginstal kerangka pengembangan ESP-IDF dan paket Python yang diperlukan.
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash Ganti port dengan nama port serial ESP32 Anda. Anda juga dapat mengubah laju baud flasher dengan mengganti baud dengan laju baud yang Anda butuhkan. Baud rate default adalah 460800.
idf . py - p < PORT > monitorJangan lupa untuk mengganti port dengan nama port serial Anda.
Informasi lebih lanjut Cara Membangun Proyek: Panduan Pemrograman ESP-IDF.
Proyek ini mencakup contoh yang menampilkan fungsionalitas perpustakaan monitor tugas. Contoh ini memberikan demonstrasi praktis tentang cara menggunakan API NVS untuk menulis/membaca data ke/dari NVS dalam aplikasi Anda sendiri.
Kontribusi untuk proyek ESP32 NVS dipersilakan. Jika Anda menemukan bug atau memiliki permintaan fitur, silakan kirimkan masalah di halaman GitHub proyek. Jika Anda ingin menyumbangkan kode, silakan kirim permintaan tarik.
Proyek ESP32 NVS dilisensikan di bawah lisensi MIT. Lihat file lisensi MIT untuk informasi lebih lanjut.