La biblioteca ESP32 IDF no volátil (NVS) está diseñada para almacenar pares de valor clave en flash.
1. Características
2. ESP32 NVS
3. Uso básico
4. Comenzando
5. Ejemplo
6. contribuyendo
7. Licencia
NVS opera en pares de valor clave. Las teclas son cadenas ASCII, la longitud de tecla máxima es actualmente de 15 caracteres. Los valores pueden tener uno de los siguientes tipos:
NVS asigna cada par de valores clave a uno de espacios de nombres. Los nombres del espacio de nombres siguen las mismas reglas que los nombres clave, es decir, la longitud máxima es de 15 caracteres. Además, no puede haber más de 254 espacios de nombres diferentes en una partición 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" );
}
}Para comenzar con el proyecto de monitor de tareas ESP32, necesitará un microcontrolador ESP32 y una computadora host con Python. También necesitará instalar el marco de desarrollo ESP-IDF y los paquetes de Python requeridos.
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash Reemplace el puerto con el nombre del puerto serie de su placa ESP32. También puede cambiar la tasa de baudios de Flasher reemplazando a Baud con la velocidad de baudios que necesita. La tasa de baudios predeterminada es 460800.
idf . py - p < PORT > monitorNo olvide reemplazar el puerto con el nombre de su puerto serie.
Más información Cómo construir el proyecto: Guía de programación ESP-IDF.
Este proyecto incluye un ejemplo que muestra la funcionalidad de la biblioteca del monitor de tareas. Este ejemplo proporciona una demostración práctica de cómo usar la API NVS para escribir/leer datos a/desde NVS en sus propias aplicaciones.
Las contribuciones al proyecto ESP32 NVS son bienvenidas. Si encuentra un error o tiene una solicitud de función, envíe un problema en la página GitHub del proyecto. Si desea contribuir con código, envíe una solicitud de extracción.
El proyecto ESP32 NVS tiene licencia bajo la licencia MIT. Consulte el archivo de licencia del MIT para obtener más información.