資源簡介
樂鑫esp8266學習rtos3.0筆記第3篇: 一篇文章帶你搞掂存儲技術(shù) NVS 的認識和使用,如何利用NVS保存整型、字符串、數(shù)組以及結(jié)構(gòu)體。。 - CSDN博客 https://blog.csdn.net/xh870189248/article/details/88537666

代碼片段和文件信息
#include?
#include?“esp_system.h“
#include?
#include?
#include?
#include?“freertos/FreeRTOS.h“
#include?“freertos/task.h“
#include?“freertos/event_groups.h“
#include?“esp_wifi.h“
#include?“nvs.h“
#include?“esp_event_loop.h“
#include?“esp_log.h“
#include?“esp_err.h“
#include?“nvs_flash.h“
#include?“driver/gpio.h“
#include?“driver/pwm.h“
#include?“driver/uart.h“
static?const?char?*TAG?=?“XuHongLog“;
//自定義一個結(jié)構(gòu)體
typedef?struct
{
????char?name[10];
????int8_t?age;
????bool?sex;
}?User_Info;
//數(shù)據(jù)庫的表名
static?const?char?*TB_SELF?=?“Tb_Self“;
//保存與讀取?int8_t?類型的?字段名
static?const?char?*FILED_SELF_i8?=?“int8_t_Self“;
//保存與讀取?字符串類型的?字段名
static?const?char?*FILED_SELF_Str?=?“str_Self“;
//保存與讀取?數(shù)組類型的?字段名
static?const?char?*FILED_SELF_Group?=?“group_Self“;
//保存與讀取?結(jié)構(gòu)體類型的?字段名
static?const?char?*FILED_SELF_Struct?=?“struct_Self“;
/**
?*?@description:??讀取數(shù)據(jù)進去nvs里面的任務(wù)
?*?@param?{type}?
?*?@return:?
?*/
static?void?Task_NVS_Read(void?*pvParameters)
{
????ESP_LOGI(TAG?“---------------------------?Start?Task_NVS_Read??--------------------------“);
????//NVS操作的句柄,類似于?rtos系統(tǒng)的任務(wù)創(chuàng)建返回的句柄!
????nvs_handle?mHandleNvsRead;
????int8_t?nvs_i8?=?0;
????esp_err_t?err?=?nvs_open(TB_SELF?NVS_READWRITE?&mHandleNvsRead);
????//打開數(shù)據(jù)庫,打開一個數(shù)據(jù)庫就相當于會返回一個句柄
????if?(err?!=?ESP_OK)
????{
????????ESP_LOGE(TAG?“Open?NVS?Table?fail“);
????????vTaskDelete(NULL);
????}
????else
????{
????????ESP_LOGI(TAG?“Open?NVS?Table?ok.“);
????}
????//讀取?i8
????err?=?nvs_get_i8(mHandleNvsRead?FILED_SELF_i8?&nvs_i8);
????if?(err?==?ESP_OK)
????????ESP_LOGI(TAG?“get?nvs_i8?=?%d?“?nvs_i8);
????else
????????ESP_LOGI(TAG?“get?nvs_i8?error“);
????//讀取?字符串
????char?data[65];
????uint32_t?len?=?sizeof(data);
????err?=?nvs_get_str(mHandleNvsRead?FILED_SELF_Str?data?&len);
????if?(err?==?ESP_OK)
????????ESP_LOGI(TAG?“get?str?data?=?%s?“?data);
????else
????????ESP_LOGI(TAG?“get?str?data?error“);
????//讀取數(shù)組
????uint8_t?group_myself_read[8];
????size_t?size?=?sizeof(group_myself_read);
????err?=?nvs_get_blob(mHandleNvsRead?FILED_SELF_Group?group_myself_read?&size);
????if?(err?==?ESP_OK)
????{
????????ESP_LOGI(TAG?“get?group_myself_read?data?OK?!“);
????????for?(uint32_t?i?=?0;?i?????????{
????????????ESP_LOGI(TAG?“get?group_myself_read?data?:?[%d]?=%02x“?i?group_myself_read[i]);
????????}
????}
????//讀取結(jié)構(gòu)體
????User_Info?user;
????memset(&user?0x0?sizeof(user));
????uint32_t?length?=?sizeof(user);
????err?=?nvs_get_blob(mHandleNvsRead?FILED_SELF_Struct?&user?&length);
????if?(err?==?ESP_OK)
????{
????????ESP_LOGI(TAG?“get?user?Struct?name?=?%s?!“?user.name);
????????ESP_LOGI(TAG?“get?user?Struct?age?=?%d?!“?user.age);
????????ESP_LOGI(TAG?“get?user?Struct?sex?=?%d?!“?user.sex);
????}
????//關(guān)閉數(shù)據(jù)庫,關(guān)閉面板!
????nvs_close(mHandleNvsRead);
????ESP_LOGI(TAG?“---------------------------?End?Task_NVS_Read??--------------------------“);
????vTaskDelete(NULL);
}
/**
?*?@description:??創(chuàng)建一個寫數(shù)據(jù)進去nvs里面的任務(wù)
?*?@param?{type}?
?*?@return:?
?*/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-03-13?16:43??34_ESP8266_Rtos3.0_NVS\
?????目錄???????????0??2019-03-13?16:43??34_ESP8266_Rtos3.0_NVS\main\
?????文件?????????146??2019-03-02?21:00??34_ESP8266_Rtos3.0_NVS\main\component.mk
?????文件?????????545??2019-03-11?15:25??34_ESP8266_Rtos3.0_NVS\main\Kconfig
?????文件????????7414??2019-03-13?16:40??34_ESP8266_Rtos3.0_NVS\main\user_main.c
?????文件?????????188??2019-03-02?21:00??34_ESP8266_Rtos3.0_NVS\Makefile
?????文件????????8977??2019-03-13?11:26??34_ESP8266_Rtos3.0_NVS\sdkconfig
?????文件????????8977??2019-03-13?11:25??34_ESP8266_Rtos3.0_NVS\sdkconfig.old
評論
共有 條評論