一新建工程 用keil 新建一个工程。里面添加DriverLib.lib, TCPD_CM3.lib , TCP_CM3.lib 这三个库 再添加Net_Config.c、LM3S_EMAC.c、LM3S_EMAC.h 这两个C 文件,其中 LM3S_EMAC.c 中RL-TCPNet 与LM3S 的底层驱动接口, Net_Config.c 是RLTCPNet 的配置文件。 如图 二写程序 #include #include #include #include #include BOOL tick; U32 dhcp_tout; extern LOCALM loca lm[]; //本地主机信息 #define MY_IP loca lm[NETIF_ETH].IpAdr //IP #define DHCP_TOUT 50 static void init_io (void); static void init () { init_io (); init_TcpNet ();//初始化TCP/IP SysTickPeriodSet(SysCtlClockGet() / 10); SysTick Enable(); } static void timer_poll () { if ((HWREG (NVIC_ST_CTRL) >> 16) & 1) { timer_tick (); //TCP 时钟 tick = __TRUE; } } /*--------------------------- init_io ---------------------------------------*/ static void init_io () { SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ); SysCtlPeriphera lEnable (SYSCTL_PERIPH_GPIOF); GPIOPadConfigSet (GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD); GPIOPadConfigSet (GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); GPIODirModeSet (GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT); GPIODirModeSet (GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_DIR_MODE_IN); } static void dhcp_check () { if (tick == __FALSE || dhcp_tout == 0) { return; } if (mem_test (&MY_IP, 0, IP_ADRLEN) == __FALSE && !(dhcp_tout & 0x80000000)) { dhcp_tout = 0; return; } if (--dhcp_tout == 0) { dhcp_disable (); dhcp_tout = 30 | 0x80000000; return; } if ( dhcp_tout == 0x80000000) { dhcp_tout = 0; } } int ma in ( void) { init (); dhcp_tout = DHCP_TOUT; while (1) { timer_poll (); ma in_TcpNet (); //TCP 主程序 dhcp_check (); } }
|