我用STM32F767做试验机,用到网口。
买了一个开发板,例程里的网口例子是需要知道电脑的IP地址。
老板说不行,最好是直接连。我搞不了,折中了一下,只要知道
在哪个网段就可以了。我试了一下,搞好了。
我是这样搞的:
//lwip 默认IP设置
//lwipx:lwip控制结构体指针
void lwip_comm_default_ip_set(__lwip_dev *lwipx)
{
u32 sn0;
sn0=*(vu32*)(0x1FF0F420);//获取STM32的唯一ID的前24位作为MAC地址后三字节
//默认远端IP为:192.168.1.100
lwipx->remoteip[0]=169;
lwipx->remoteip[1]=254;
lwipx->remoteip[2]=255;
lwipx->remoteip[3]=255;
//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]=(sn0>>16)&0XFF;//低三字节用STM32的唯一ID
lwipx->mac[4]=(sn0>>8)&0XFFF;
lwipx->mac[5]=sn0&0XFF;
lwipx->ip[0]=169;
lwipx->ip[1]=254;
lwipx->ip[2]=62;
lwipx->ip[3]=30;
//默认子网掩码:255.255.255.0
lwipx->netmask[0]=255;
lwipx->netmask[1]=255;
lwipx->netmask[2]=0;
lwipx->netmask[3]=0;
//默认网关:192.168.1.1
lwipx->gateway[0]=169;
lwipx->gateway[1]=254;
lwipx->gateway[2]=62;
lwipx->gateway[3]=1;
lwipx->dhcpstatus=0;//没有DHCP
}
以上是下位机IP地址设置代码。
SckServer.Protocol = sckUDPProtocol
With SckServer
.RemoteHost = "169.254.255.255"
.RemotePort = 50000
.LocalPort = 50000
.Bind 50000
End With
这是上位机用VB编写的网口初始化代码。
这是电脑IP地址设置。这样的话,可以不需要知道电脑IP地址。
可是需要把电脑的子网掩码设成255.255.0.0。
老板说不行,我觉得也不妥。
那如果把电脑的子网掩码改成255.255.255.0,
就意味着下位机的子网掩码也要改成255.255.255.0.
可是这样网口连接不上。
请问高手,还应该怎么设置才能让网口通讯正常呢?谢谢!
|