esp32p4-function-EV-borad官方代码的一些疑惑

冰冰watermelon
Posts: 3
Joined: Mon Jan 26, 2026 4:06 am

esp32p4-function-EV-borad官方代码的一些疑惑

Postby 冰冰watermelon » Tue Jan 27, 2026 3:49 am

在官方给的示例代码中
https://github.com/espressif/esp-dev-ki ... etting.cpp
这个设置文件的第473-481行
typedef enum {
WIFI_EVENT_CONNECTED = BIT(0),
WIFI_EVENT_INIT_DONE = BIT(1),
WIFI_EVENT_UI_INIT_DONE = BIT(2),
WIFI_EVENT_SCANING = BIT(3)
} wifi_event_id_t;

esp_err_t AppSettings::initWifi()
{
s_wifi_event_group = xEventGroupCreate();
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_CONNECTED);
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_INIT_DONE);
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_SCANING);
if(!(xEventGroupGetBits(s_wifi_event_group) & WIFI_EVENT_UI_INIT_DONE)) {
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_UI_INIT_DONE);
}

ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default());
esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta();
assert(sta_netif);
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));

esp_event_handler_instance_t instance_any_id;
ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,
&wifiEventHandler,
this,
&instance_any_id));

ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_start());

return ESP_OK;
}
整个函数代码,中
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_CONNECTED);
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_INIT_DONE);
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_SCANING);
if(!(xEventGroupGetBits(s_wifi_event_group) & WIFI_EVENT_UI_INIT_DONE)) {
xEventGroupClearBits(s_wifi_event_group, WIFI_EVENT_UI_INIT_DONE);
}
为什么要进行这样一个if判断呢,这个把本来是0的位置标记为0是为什么呢,是因为要防御某些bug还是单纯打错了

Who is online

Users browsing this forum: No registered users and 3 guests