• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签: esp826  

资源简介

乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。。 - 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“;

//自定义一个结构体
typedef struct
{
    char name[10];
    int8_t age;
    bool sex;
} User_Info;

//数据库的表名
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“;
//保存与读取 数组类型的 字段名
static const char *FILED_SELF_Group = “group_Self“;
//保存与读取 结构体类型的 字段名
static const char *FILED_SELF_Struct = “struct_Self“;

/**
 * @description:  读取数据进去nvs里面的任务
 * @param {type} 
 * @return: 
 */
static void Task_NVS_Read(void *pvParameters)
{

    ESP_LOGI(TAG “--------------------------- Start Task_NVS_Read  --------------------------“);

    //NVS操作的句柄,类似于 rtos系统的任务创建返回的句柄!
    nvs_handle mHandleNvsRead;
    int8_t nvs_i8 = 0;

    esp_err_t err = nvs_open(TB_SELF NVS_READWRITE &mHandleNvsRead);
    //打开数据库,打开一个数据库就相当于会返回一个句柄
    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“);

    //读取数组
    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 < size; i++)
        {
            ESP_LOGI(TAG “get group_myself_read data : [%d] =%02x“ i group_myself_read[i]);
        }
    }

    //读取结构体
    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);
    }

    //关闭数据库,关闭面板!
    nvs_close(mHandleNvsRead);

    ESP_LOGI(TAG “--------------------------- End Task_NVS_Read  --------------------------“);
    vTaskDelete(NULL);
}

/**
 * @description:  创建一个写数据进去nvs里面的任务
 * @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

评论

共有 条评论