Библиотека нелетательного хранения ESP32 IDF (NVS) предназначена для хранения пар клавиш во вспышке.
1. Особенности
2. ESP32 NVS
3. Основное использование
4. Начало работы
5. Пример
6. Вклад
7. Лицензия
NVS работает на парах ключей. Ключи - это струны ASCII, максимальная длина ключа в настоящее время составляет 15 символов. Значения могут иметь один из следующих типов:
NVS назначает каждую пару ключевых значений одному из пространств имен. Имена пространства имен следуют тем же правилам, что и имена ключей, то есть максимальная длина составляет 15 символов. Кроме того, в одном разделе 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" );
}
}Чтобы начать работу с проектом Monitor Monitor 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. Вы также можете изменить скорость Flasher Baud, заменив бод на необходимую вам ставку бодского бод. Скорость передачи по умолчанию 460800.
idf . py - p < PORT > monitorНе забудьте заменить порт на название последовательного порта.
Более подробная информация Как создать проект: Руководство по программированию ESP-IDF.
Этот проект включает в себя пример, который демонстрирует функциональность библиотеки мониторинга задач. Этот пример дает практическую демонстрацию того, как использовать API NVS для записи/чтения данных в/из NVS в ваших собственных приложениях.
Взносы в проект ESP32 NVS приветствуются. Если вы найдете ошибку или имеете запрос на функции, отправьте проблему на странице GitHub проекта. Если вы хотите внести код, пожалуйста, отправьте запрос на привлечение.
Проект ESP32 NVS лицензирован по лицензии MIT. См. Файл лицензии MIT для получения дополнительной информации.