如何修复 esp_eth_new_netif_glue() 返回 NULL

问题

使用 esp_eth_new_netif_glue() 初始化 ESP32 的以太网接口时,你得到一个 NULL 指针返回。

esp_eth_fix.cpp
esp_eth_netif_glue_handle_t netif_glue = esp_eth_new_netif_glue(eth_handle);
if(netif_glue == nullptr) {
    log_e("esp_eth_new_netif_glue failed");
}

解决方案

此失败的典型原因是默认事件循环未运行,这反过来导致 esp_event_handler_instance_register()ESP_ERR_INVALID_STATE 失败。

在调用 esp_eth_new_netif_glue() 之前启动默认事件循环:

esp_event_loop_create_default.cpp
esp_err_t err = esp_event_loop_create_default();
if(err != ESP_OK) {
    log_e("esp_event_loop_create_default failed");
    return;
}

Check out similar posts by category: ESP32, ESP-IDF