ESP32-C3, esp-idf 4.3.5,sta模式设置连接wifi超时
时间: 2024-02-18 07:06:17 浏览: 97
ESP32C3通过wifi实现SNTP时钟同步
在 ESP32-C3 上,你可以通过以下代码来设置 STA 模式连接 WiFi 时的超时时间:
```c
#include "esp_wifi.h"
// 设置 STA 模式连接 WiFi 的超时时间为 10 秒
#define STA_WIFI_CONNECT_TIMEOUT_MS (10000)
// 连接 WiFi
esp_err_t connect_wifi(const char *ssid, const char *password) {
wifi_config_t wifi_config = { 0 };
strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid));
strncpy((char *)wifi_config.sta.password, password, sizeof(wifi_config.sta.password));
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_start());
uint32_t start_time = esp_timer_get_time();
wifi_ap_record_t ap_info = { 0 };
while (true) {
esp_err_t err = esp_wifi_sta_get_ap_info(&ap_info);
if (err == ESP_OK) {
ESP_LOGI(TAG, "Connected to WiFi AP %s", ap_info.ssid);
return ESP_OK;
}
uint32_t time_elapsed = (esp_timer_get_time() - start_time) / 1000;
if (time_elapsed >= STA_WIFI_CONNECT_TIMEOUT_MS) {
ESP_LOGE(TAG, "Failed to connect to WiFi AP %s within timeout", ssid);
return ESP_ERR_TIMEOUT;
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}
```
在这个代码中,`STA_WIFI_CONNECT_TIMEOUT_MS` 宏定义了 STA 模式连接 WiFi 的超时时间。在 `connect_wifi()` 函数中,我们使用了 `esp_wifi_sta_get_ap_info()` 来获取连接的 WiFi AP 信息,如果在超时时间内没有获取到 AP 信息,则会返回超时错误。你可以根据需要来调整超时时间。
阅读全文