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" );
}
}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 보드의 직렬 포트 이름으로 교체하십시오. Baud를 필요한 보드 속도로 교체하여 Flasher Baud 속도를 변경할 수도 있습니다. 기본 보드 속도는 460800입니다.
idf . py - p < PORT > monitor포트를 직렬 포트 이름으로 바꾸는 것을 잊지 마십시오.
추가 정보 프로젝트 구축 방법 : ESP-IDF 프로그래밍 안내서.
이 프로젝트에는 작업 모니터 라이브러리의 기능을 보여주는 예가 포함되어 있습니다. 이 예제는 NVS API를 사용하여 자체 애플리케이션에서 NVS에 데이터를 작성/읽는 방법에 대한 실질적인 데모를 제공합니다.
ESP32 NVS 프로젝트에 대한 기여를 환영합니다. 버그가 있거나 기능 요청이 있으면 프로젝트의 GitHub 페이지에 문제를 제출하십시오. 코드를 기여하려면 풀 요청을 제출하십시오.
ESP32 NVS 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 MIT 라이센스 파일을 참조하십시오.