3.LwIP相关初始化
void LwIP_Config (void)
{
struct ip_addr ipaddr;
struct ip_addr netmask;
struct ip_addr gw;
// 调用LWIP初始化函数
lwip_init();
IP4_ADDR(&ipaddr, 192, 168, 1, 16); // 设置网络接口的ip地址
IP4_ADDR(&netmask, 255, 255, 255, 0); // 子网掩码
IP4_ADDR(&gw, 192, 168, 1, 1); // 网关
// 初始化enc28j60与LWIP的接口,参数为网络接口结构体、ip地址、
// 子网掩码、网关、网卡信息指针、初始化函数、输入函数
netif_add(&enc28j60, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input);
// 把enc28j60设置为默认网卡
netif_set_default(&enc28j60);
netif_set_up(&enc28j60);
}
【说明】
【1】通过netif_add初始化网卡IP地址,子网掩码和网关地址。此处使用静态IP地址。
【2】netif_add需要传入两个函数指针,分别是网卡初始化函数和接收内容处理函数。ethernetif_init位于ethernetif.c而ethernet_input并不位于ethernetif.c,此处也不能使用ethernetif_input,其实ethernet_input在函数ethernetif_input被调用,但是ethernet_input变了一个样子:
netif->input(p, netif)!=ERR_OK
【3】在带操作系统的移植中,最后一个参数使用tcpip_input。 |