方法:
1、DHCP完主动获取
DHCP会把获取到的路由器自动分配的IP地址放在API函数dhcp_start里面的struct netif*参数,只需要等待DHCP分配完后,查看该结构体的成员信息就可可以得到DHCP分配后的地址
while( ip_addr_cmp( &(gnetif.ip_addr) , &ipaddr ) )
{
vTaskDelay(1);
}
printf("DHCP:%d.%d.%d.%d\r\n",((gnetif.ip_addr.addr)&0x000000ff),
(((gnetif.ip_addr.addr)&0x0000ff00)>>8),
(((gnetif.ip_addr.addr)&0x00ff0000)>>16),
((gnetif.ip_addr.addr)&0xff000000)>>24);
2、路由器分配后立即得到
dhcp服务有一个底层函数dhcp_bind,修改该函数内容即可获得IP地址
代码如下(示例):
//u32_t ip值
printf("dhcp_bind(): IP: 0x%08"X32_F"\r\n",ip4_addr_get_u32(&dhcp->offered_ip_addr));
//点分十进制
uint32_t ret_ip = ip4_addr_get_u32(&dhcp->offered_ip_addr);
printf("ip:%d.%d.%d.%d\r\n",ret_ip&0xFF, (ret_ip&0xFF00)>>8 , (ret_ip&0xFF0000)>>16 , (ret_ip&0xFF000000)>>24 );