La bibliothèque ESP32 IDF non volatile (NVS) est conçue pour stocker des paires de valeurs clés en flash.
1. Caractéristiques
2. ESP32 NVS
3. Utilisation de base
4. Début
5. Exemple
6. Contribuer
7. Licence
NVS fonctionne sur des paires de valeurs clés. Les clés sont des chaînes ASCII, la longueur de clé maximale est actuellement de 15 caractères. Les valeurs peuvent avoir l'un des types suivants:
NVS attribue chaque paire de valeurs de clé à l'un des espaces de noms. Les noms d'espace de noms suivent les mêmes règles que les noms de clés, c'est-à-dire que la longueur maximale est de 15 caractères. De plus, il ne peut pas y avoir plus de 254 espaces de noms différents dans une partition 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" );
}
}Pour commencer avec le projet ESP32 Task Monitor, vous aurez besoin d'un microcontrôleur ESP32 et d'un ordinateur hôte exécutant Python. Vous devrez également installer le cadre de développement ESP-IDF et les packages Python requis.
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash Remplacez le port par le nom du port série de votre carte ESP32. Vous pouvez également modifier le taux de bauds clignotant en remplaçant Baud par le taux de bauds dont vous avez besoin. Le taux de bauds par défaut est de 460800.
idf . py - p < PORT > monitorN'oubliez pas de remplacer le port par votre nom de port série.
Plus d'informations sur la création du projet: Guide de programmation ESP-IDF.
Ce projet comprend un exemple qui présente les fonctionnalités de la bibliothèque de moniteurs de tâches. Cet exemple fournit une démonstration pratique de la façon d'utiliser l'API NVS pour écrire / lire des données vers / depuis NVS dans vos propres applications.
Les contributions au projet ESP32 NVS sont les bienvenues. Si vous trouvez un bogue ou avez une demande de fonctionnalité, veuillez soumettre un problème sur la page GitHub du projet. Si vous souhaitez contribuer du code, veuillez soumettre une demande de traction.
Le projet ESP32 NVS est sous licence sous la licence du MIT. Voir le fichier de licence MIT pour plus d'informations.