怎么查看nvs中存在哪些键
时间: 2024-03-09 10:44:50 浏览: 9
你可以使用 nvs_get_key 函数来获取 NVS 中存储的所有键。该函数需要传递一个 nvs_handle_t 类型的参数,用于指向一个已打开的 NVS 命名空间句柄。你还需要传递一个 char ** 类型的指针参数,用于接收键列表的指针。该函数的返回值是键的总数。以下是一个示例代码:
```c
nvs_handle_t nvs_handle;
esp_err_t err;
// 打开一个名为 "my_namespace" 的 NVS 命名空间
err = nvs_open("my_namespace", NVS_READONLY, &nvs_handle);
if (err != ESP_OK) {
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
} else {
// 获取 NVS 中存储的所有键
size_t num_keys;
err = nvs_get_key(nvs_handle, NULL, &num_keys);
if (err != ESP_OK) {
printf("Error (%s) getting number of NVS keys!\n", esp_err_to_name(err));
} else {
// 分配一个指针数组来存储所有键
char** keys = malloc(num_keys * sizeof(char*));
if (keys == NULL) {
printf("Error allocating memory for NVS keys!\n");
} else {
// 获取所有键
err = nvs_get_key(nvs_handle, keys, &num_keys);
if (err != ESP_OK) {
printf("Error (%s) getting NVS keys!\n", esp_err_to_name(err));
} else {
// 打印所有键
printf("NVS keys:\n");
for (int i = 0; i < num_keys; i++) {
printf("- %s\n", keys[i]);
}
}
// 释放分配的内存
free(keys);
}
}
// 关闭 NVS 命名空间句柄
nvs_close(nvs_handle);
}
```
该示例代码首先打开一个名为 "my_namespace" 的只读 NVS 命名空间,并使用 nvs_get_key 函数获取所有键。然后,它分配一个指针数组来存储所有键,并打印它们。最后,它释放分配的内存并关闭 NVS 命名空间句柄。