本人最近在学习enet_io这个例程,可是程序下到板子里一直ping不通,由于没用lm3s8962的开发板,是自己焊的一块lm3s69911的板子,所以外围电路不一样,但以太网口都是一样的,所以我感觉应该是能ping通的,那些功能实现不了又是另外一码事,可是就是ping不通,请问是什么原因啊?我在主程序中将其已改成静态ip了,是不是哪个函数还要做简单修改?这个例程中只要哪个函数能顺利执行,就能实现和电脑的通讯,web能控制?
int
main(void)
{
// unsigned long ulUser0, ulUser1;
// unsigned char pucMACArray[8];
unsigned long ulIPAddr=0xC0A80619,ulNetMask=0xFFFFFF00,ulGWAddr=0xC0A80601;
const unsigned char pucMACArray[] ={0X00,0x14,0x97,0xF0,0x00,0x01};
/****hmm************************/
#if PLL_EN == 0 /* Not use PLL 不使用PLL */
SysCtlClockSet(CCLK_DIV | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | EXT_CLK);
/* System clock= */
/* EXT_CLK/CCLK_DIV */
/* 系统时钟=EXT_CLK/CCLK_DIV */
#else /* Use PLL 使用PLL */
SysCtlClockSet(CCLK_DIV | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | EXT_CLK);
/* System clock=200MHz/CCLK_DIV*/
/* 系统时钟=200MHz/CCLK_DIV */
#endif
/********hmm**************/
//
// Set the clocking to run directly from the crystal.
//
/*
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
*/
//
// Initialize the OLED display.
//
RIT128x96x4Init(1000000);
// RIT128x96x4StringDraw("Web-Based I/O Control", 0, 0, 15);
// RIT128x96x4StringDraw("Browser Message:", 0, 53, 15);
//
// Enable and Reset the Ethernet Controller.
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
//
// Enable Port F for Ethernet LEDs.
// LED0 Bit 3 Output
// LED1 Bit 2 Output
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);
//
// Configure SysTick for a periodic interrupt.
//
SysTickPeriodSet(SysCtlClockGet() / SYSTICKHZ);
SysTickEnable();
SysTickIntEnable();
//
// Enable processor interrupts.
//
IntMasterEnable();
//
// Configure the hardware MAC address for Ethernet Controller filtering of
// incoming packets.
//
// For the LM3S6965 Evaluation Kit, the MAC address will be stored in the
// non-volatile USER0 and USER1 registers. These registers can be read
// using the FlashUserGet function, as illustrated below.
//
/*
FlashUserGet(&ulUser0, &ulUser1);
if((ulUser0 == 0xffffffff) || (ulUser1 == 0xffffffff))
{
//
// We should never get here. This is an error if the MAC address
// has not been programmed into the device. Exit the program.
//
RIT128x96x4StringDraw("MAC Address", 0, 16, 15);
RIT128x96x4StringDraw("Not Programmed!", 0, 24, 15);
while(1);
}
//
// Convert the 24/24 split MAC address from NV ram into a 32/16 split
// MAC address needed to program the hardware registers, then program
// the MAC address into the Ethernet Controller registers.
//
pucMACArray[0] = ((ulUser0 >> 0) & 0xff);
pucMACArray[1] = ((ulUser0 >> 8) & 0xff);
pucMACArray[2] = ((ulUser0 >> 16) & 0xff);
pucMACArray[3] = ((ulUser1 >> 0) & 0xff);
pucMACArray[4] = ((ulUser1 >> 8) & 0xff);
pucMACArray[5] = ((ulUser1 >> 16) & 0xff);
*/
//
// Initialze the lwIP library, using DHCP.
//
//lwIPInit(pucMACArray, 0, 0, 0, IPADDR_USE_DHCP);
lwIPInit(pucMACArray,ulIPAddr, ulNetMask, ulGWAddr, IPADDR_USE_STATIC);
//
// Setup the device locator service.
//
/*
LocatorInit();
LocatorMACAddrSet(pucMACArray);
LocatorAppTitleSet("EK-LM3S8962 enet_io");
*/
//
// Initialize a sample httpd server.
//
httpd_init();
/*********hmm****/
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIODirModeSet(GPIO_PORTE_BASE, SYS, GPIO_DIR_MODE_OUT); /* 设置连接sys收发指示灯PE5为输出 */
GPIOPadConfigSet(GPIO_PORTE_BASE, SYS, /* 设置驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPinWrite(GPIO_PORTE_BASE, SYS, ~SYS);
/******HMM*****/
//
// Pass our tag information to the HTTP server.
//
http_set_ssi_handler(SSIHandler, g_pcConfigSSITags,
NUM_CONFIG_SSI_TAGS);
//
// Pass our CGI handlers to the HTTP server.
//
http_set_cgi_handlers(g_psConfigCGIURIs, NUM_CONFIG_CGI_URIS);
//
// Initialize IO controls
//
io_init();
//
// Loop forever. All the work is done in interrupt handlers.
//
while(1)
{
}
}
上面是主程序,其余未做修改
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>