NVS

初始化可参考          Espressif\frameworks\esp-idf-v5.3.1\examples\storage\nvs_rw_value

void Dri_NVS_init(void)
{
    // NVS整体初始化
    esp_err_t err = nvs_flash_init();
    if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
    {
        // NVS partition was truncated and needs to be erased
        // Retry nvs_flash_init
        nvs_flash_erase();
        err = nvs_flash_init();
    }

    // 开辟一块空间
    nvs_open("storage", NVS_READWRITE, &my_handle);
}

NVS常用函数

1. 向nvs写入数据
        nvs_set_str(nvs_handle_t handle, const char *key, const char *value)(句柄, 键, 值)

一般写入数据后需要提交数据, 否则数据只在缓存中

nvs_commit(nvs_handle_t handle)

2. 从nvs读取数据

        nvs_get_str(nvs_handle_t handle, const char *key, char *out_value, size_t *length)(句柄, 键, 值, 长度)

(1) 当length值为0,返回非法长度错误       

(2) out_value作为容器存储读取出的数据,当out_value为空时,只返回读取的数据长度

(3) 当容器的大小小于读取数据的长度时,只返回读取数据长度,防止产生越界导致程序崩溃, 并返回     非法长度错误   

3. 在nvs中查找关键词

        nvs_find_key(nvs_handle_t handle, const char *key, nvs_type_t *out_type)(句柄, 键, 查找的数据类型)

cJSON

        cJSON_CreateObject() 是 cJSON 库中用于创建新 JSON 对象的函数,返回指向新对象的指针。创建后需通过 cJSON_Delete() 释放内存。 ‌

 cJSON *root_json = cJSON_CreateObject();

该函数在内存中分配空间并初始化一个空的 JSON 对象,返回的指针可用于后续添加键值对。

        cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)是 cJSON 库中用于向对象添加子项的函数。 ‌‌

参数说明

  • object‌:目标对象,需指向已创建的 cJSON 结构体。
  • string‌:子项名称(键名),需为 const char* 类型。
  • item‌:子项内容,需为 cJSON* 类型,可通过其他函数(如 cJSON_CreateNumbercJSON_CreateString 等)创建。

该函数将子项添加到对象中,若键名已存在则更新对应值,否则创建新键。

        

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐