esp32 读写Config
时间: 2023-07-03 16:17:08 浏览: 77
在ESP32中,你可以使用nvs_flash库来读写Config。Config是一种特殊的键值对,用于存储应用程序的配置信息,例如WiFi SSID和密码等。下面是一个简单的示例代码:
```c
#include "nvs_flash.h"
#include "esp_err.h"
#include "esp_log.h"
// 初始化nvs_flash库
nvs_flash_init();
// 打开Config命名空间
nvs_handle_t config_handle;
esp_err_t err = nvs_open("config", NVS_READWRITE, &config_handle);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error (%s) opening NVS handle!", esp_err_to_name(err));
} else {
// 读取WiFi SSID和密码
char ssid[32], password[32];
size_t ssid_size = sizeof(ssid);
size_t password_size = sizeof(password);
err = nvs_get_str(config_handle, "wifi_ssid", ssid, &ssid_size);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error (%s) reading wifi_ssid from NVS!", esp_err_to_name(err));
}
err = nvs_get_str(config_handle, "wifi_password", password, &password_size);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error (%s) reading wifi_password from NVS!", esp_err_to_name(err));
}
// 写入WiFi SSID和密码
err = nvs_set_str(config_handle, "wifi_ssid", "my_wifi_ssid");
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error (%s) writing wifi_ssid to NVS!", esp_err_to_name(err));
}
err = nvs_set_str(config_handle, "wifi_password", "my_wifi_password");
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error (%s) writing wifi_password to NVS!", esp_err_to_name(err));
}
// 关闭Config命名空间句柄
nvs_close(config_handle);
}
// 如果你需要,你可以通过下面的代码来擦除整个Config分区
nvs_flash_erase_partition("config");
```
在上面的示例代码中,我们使用`nvs_get_str()`函数来读取WiFi SSID和密码,并使用`nvs_set_str()`函数来写入新的值。你可以根据你的需要,使用其他类型的数据,如`nvs_set_u32()`和`nvs_get_u32()`等。
请注意,为了使用nvs_flash库,你需要在你的项目中添加`nvs_flash`组件。具体的步骤可以参考ESP-IDF文档中的相关章节。另外,需要确保你的分区表配置正确,以便正确地分配和使用Config分区。
阅读全文