[已解决] wifi模式设置静态IP地址失败
Posted: Thu Nov 18, 2021 12:16 pm
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 没有出现问题。
请技术支持分析下问题,急!!!!
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 没有出现问题。
请技术支持分析下问题,急!!!!