乐鑫技术交流
直播中

殷谷光

7年用户 1074经验值
擅长:控制/MCU
私信 关注
[问答]

wifi模式设置静态IP地址失败的原因?

wifi模式在进入连接注册事件回调函数里调用设置静态IP函数,函数如下:


static void wifi_connected_handler(void *arg, esp_event_base_t event_base,
                               int32_t event_id, void *event_data)
{
        app_set_static_ip(arg);   
}

static void app_set_static_ip(esp_netif_t *netif)
{
    if (esp_netif_dhcpc_stop(netif) != ESP_OK) {
        ESP_LOGE(TAG, "Failed to stop dhcp client");
        return;
    }

    esp_netif_ip_info_t ip;
    memset(&ip, 0 , sizeof(esp_netif_ip_info_t));
    ip.ip.addr = app_static_ip.ip.addr;
    ip.netmask.addr = app_static_ip.netmask.addr;
    ip.gw.addr = app_static_ip.gw.addr;
    if (esp_netif_set_ip_info(netif, &ip) != ESP_OK) {
        ESP_LOGE(TAG, "Failed to set ip info");
        return;
    }
    ESP_ERROR_CHECK(app_set_dns_server(netif, app_static_ip.gw.addr, ESP_NETIF_DNS_MAIN));
    ESP_ERROR_CHECK(app_set_dns_server(netif, ipaddr_addr("0.0.0.0"), ESP_NETIF_DNS_BACKUP));
}

问题出现在调用这个函数 esp_netif_dhcpc_stop(netif) 后,系统死机复位。这边试过使用以太网,同样在连接成功回调函数调用dhcp_stop 没有出现问题。

请技术支持分析下问题,急!

回帖(1)

李鸿

2024-6-12 17:33:04
现在我们来分析可能导致设置静态IP地址失败的原因:

1. **参数错误**:确保在调用 `app_set_static_ip` 函数时,传入的 `esp_netif_t *netif` 参数是正确的。如果参数错误,可能导致设置失败。

2. **IP地址冲突**:如果设置的静态IP地址与局域网内的其他设备IP地址冲突,可能导致设置失败。确保选择一个不冲突的IP地址。

3. **子网掩码或网关设置错误**:在设置静态IP地址时,还需要设置子网掩码和网关。如果这些设置错误,可能导致网络连接失败。请检查这些设置是否正确。

4. **DNS服务器设置错误**:虽然不是设置静态IP地址的直接原因,但错误的DNS服务器设置可能导致网络连接问题。请检查DNS服务器设置是否正确。

5. **网络接口未初始化或未连接**:在调用 `app_set_static_ip` 函数之前,请确保网络接口已初始化并成功连接到WiFi网络。

6. **代码逻辑错误**:检查 `app_set_static_ip` 函数内部的逻辑是否正确。例如,确保在设置IP地址之前调用了 `esp_netif_dhcpc_stop` 函数,以停止DHCP客户端。

7. **ESP32固件或ESP-IDF版本问题**:如果您使用的ESP32固件或ESP-IDF版本存在已知的bug,可能导致设置静态IP地址失败。尝试更新到最新版本。

8. **硬件问题**:虽然不太可能,但硬件问题(如WiFi模块损坏)也可能导致设置静态IP地址失败。

为了解决这个问题,您可以按照以下步骤进行调试:

1. 检查 `wifi_connected_handler` 和 `app_set_static_ip` 函数的参数是否正确。
2. 确保设置的静态IP地址、子网掩码、网关和DNS服务器地址正确无误。
3. 在 `app_set_static_ip` 函数中添加日志输出,以便跟踪设置过程中的任何错误或问题。
4. 检查网络接口是否已初始化并成功连接到WiFi网络。
5. 如果问题仍然存在,请尝试更新ESP32固件和ESP-IDF版本。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分