A biblioteca ESP32 IDF não volátil (NVS) foi projetada para armazenar pares de valor-chave no Flash.
1. Recursos
2. ESP32 NVS
3. Uso básico
4. Começando
5. Exemplo
6. Contribuindo
7. Licença
O NVS opera em pares de valor-chave. As chaves são strings ASCII, o comprimento da chave máxima é atualmente 15 caracteres. Os valores podem ter um dos seguintes tipos:
O NVS atribui cada par de valores-chave a um dos namespaces. Os nomes de namespace seguem as mesmas regras que os nomes de chave, ou seja, o comprimento máximo é de 15 caracteres. Além disso, não pode haver mais de 254 espaços de nome diferentes em uma partição 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 começar com o projeto Monitor de tarefas ESP32, você precisará de um microcontrolador ESP32 e um computador host que executa o Python. Você também precisará instalar a estrutura de desenvolvimento ESP-IDF e os pacotes Python necessários.
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash Substitua a porta pelo nome da porta em série da placa ESP32. Você também pode alterar a taxa de transmissão do pisca -pisca substituindo o baud pela taxa de transmissão necessária. A taxa de transmissão padrão é 460800.
idf . py - p < PORT > monitorNão se esqueça de substituir a porta pelo seu nome de porta serial.
Mais informações como criar projeto: Guia de programação ESP-IDF.
Este projeto inclui um exemplo que mostra a funcionalidade da biblioteca do monitor de tarefas. Este exemplo fornece uma demonstração prática de como usar a API NVS para escrever/ler dados de/para NVs em seus próprios aplicativos.
As contribuições para o projeto NVS ESP32 são bem -vindas. Se você encontrar um bug ou tiver uma solicitação de recurso, envie um problema na página do Github do projeto. Se você quiser contribuir com o código, envie uma solicitação de tração.
O projeto NVS ESP32 é licenciado sob a licença do MIT. Consulte o arquivo de licença do MIT para obter mais informações.