请教下,关于 lwip 的 IP4_ADDR 这个使用 ?//lwip控制结构体
typedef struct
{
u8 mac[6]; //MAC地址
u8 remoteip[4]; //远端主机IP地址
u8 ip[4]; //本机IP地址
u8 netmask[4]; //子网掩码
u8 gateway[4]; //默认网关的IP地址
vu8 dhcpstatus; //dhcp状态
//0,未获取DHCP地址;
//1,进入DHCP获取状态
//2,成功获取DHCP地址
//0XFF,获取失败.
}__lwip_dev;
//lwipx:lwip控制结构体指针
void lwip_comm_default_ip_set(__lwip_dev *lwipx)
{
u8 i;
u32 mcuID[3];
for(i=0; i<3; i++)
{
mcuID
= MCU_GetChipID(i*4); //获取STM32的唯一ID号,后24位作为MAC地址后三字节 } //默认远端IP为:192.168.1.123 lwipx->remoteip[0]=192; lwipx->remoteip[1]=168; lwipx->remoteip[2]=1; lwipx->remoteip[3]=123; //MAC地址设置(高三字节固定为:2.0.0,低三字节用STM32唯一ID) lwipx->mac[0]=2;//高三字节(IEEE称之为组织唯一ID,OUI)地址固定为:2.0.0 lwipx->mac[1]=0; lwipx->mac[2]=0; lwipx->mac[3]=(mcuID[2]>>16)&0XFF;//低三字节用STM32的唯一ID lwipx->mac[4]=(mcuID[2]>>8)&0XFFF; lwipx->mac[5]=mcuID[2]&0XFF; //默认本地IP为:192.168.1.105 lwipx->ip[0]=192; lwipx->ip[1]=168; lwipx->ip[2]=1; lwipx->ip[3]=105; //默认子网掩码:255.255.255.0 lwipx->netmask[0]=255; lwipx->netmask[1]=255; lwipx->netmask[2]=255; lwipx->netmask[3]=0; //默认网关:192.168.1.1 lwipx->gateway[0]=192; lwipx->gateway[1]=168; lwipx->gateway[2]=0; lwipx->gateway[3]=1; lwipx->dhcpstatus=0;//没有DHCP } { lwip_comm_default_ip_set( &lwipdev ); // IP addresses initialization IP_ADDRESS[0] = 192; IP_ADDRESS[1] = 168; IP_ADDRESS[2] = 0; IP_ADDRESS[3] = 105; NETMASK_ADDRESS[0] = 255; NETMASK_ADDRESS[1] = 255; NETMASK_ADDRESS[2] = 255; NETMASK_ADDRESS[3] = 0; GATEWAY_ADDRESS[0] = 192; GATEWAY_ADDRESS[1] = 168; GATEWAY_ADDRESS[2] = 0; GATEWAY_ADDRESS[3] = 1; tcpip_init( NULL, NULL ); // 方法 1 ok IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]); IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]); IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]); // 方法 2 不行 ,不知道是为何 ?? IP4_ADDR(&ipaddr,lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]); IP4_ADDR(&netmask,lwipdev.netmask[0],lwipdev.netmask[1] ,lwipdev.netmask[2],lwipdev.netmask[3]); IP4_ADDR(&gw,lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); // add the network interface (IPv4/IPv6) with RTOS netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, eernetif_init, &tcpip_input); } 具体描述: 使用方法1 可以ping 网 使用方法2,ping 网不用, 上述设置的 ip 地址也都是一样的,所以想请教下,这是为何 ??????
0
|