完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在ESP32C3中存储多个WiFi配置信息,可以使用Non-Volatile Storage(NVS)分区。NVS是一种用于存储键值对数据的非易失性存储解决方案。以下是如何在ESP32C3中使用NVS存储多个WiFi配置信息的步骤:
1. **初始化NVS**: 首先,需要初始化NVS。这通常在程序的开始部分完成。 ```cpp #include "nvs_flash.h" void app_main() { esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { // NVS partition was truncated and needs to be erased // Retry nvs_flash_init ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); // Your main application code here } ``` 2. **定义WiFi配置结构**: 定义一个结构体来存储WiFi的SSID和密码。 ```cpp struct WiFiConfig { char ssid[32]; char password[64]; }; ``` 3. **存储WiFi配置**: 使用NVS存储WiFi配置信息。你可以通过为每个WiFi配置定义一个唯一的键来存储多个配置。 ```cpp void store_wifi_config(const char* key, const WiFiConfig& config) { nvs_handle_t handle; esp_err_t err = nvs_open("wifi_config", NVS_READWRITE, &handle); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to open NVS handle: %s", esp_err_to_name(err)); return; } err = nvs_set_str(handle, key, config.ssid); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to set SSID: %s", esp_err_to_name(err)); } err = nvs_set_str(handle, key, config.password); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to set password: %s", esp_err_to_name(err)); } nvs_close(handle); } ``` 4. **读取WiFi配置**: 从NVS读取WiFi配置信息。 ```cpp void read_wifi_config(const char* key, WiFiConfig& config) { nvs_handle_t handle; esp_err_t err = nvs_open("wifi_config", NVS_READONLY, &handle); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to open NVS handle: %s", esp_err_to_name(err)); return; } size_t length = sizeof(config.ssid); err = nvs_get_str(handle, key, config.ssid, &length); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to get SSID: %s", esp_err_to_name(err)); } length = sizeof(config.password); err = nvs_get_str(handle, key, config.password, &length); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to get password: %s", esp_err_to_name(err)); } nvs_close(handle); } ``` 5. **使用WiFi配置**: 使用存储的WiFi配置连接到网络。 ```cpp WiFiConfig config; read_wifi_config("my_wifi_key", config); esp_wifi_sta_set_config(ESP_IF_WIFI_STA, &config); esp_wifi_connect(); ``` 6. **处理多个WiFi配置**: 你可以为每个WiFi配置定义一个唯一的键,并使用上述的存储和读取函数来管理它们。 请注意,ESP32C3的NVS存储空间有限,因此存储大量WiFi配置可能会受到限制。确保在设计应用程序时考虑到这一点。 |
|
|
|
只有小组成员才能发言,加入小组>>
474浏览 6评论
397浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
378浏览 5评论
383浏览 4评论
354浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 18:06 , Processed in 0.623319 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号