实验 TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\enet_lwip
例程中初始化了液晶和图形库,我仅仅搭建了最小系统,在初始化液晶的过程中会进Fault ISR ,为啥?
例程是dhcp获取ip的,我把网线插到无限路由器扔获取不到ip
ROM_FlashUserGet(&ui32User0, &ui32User1);
if((ui32User0 == 0xffffffff) || (ui32User1 == 0xffffffff))
{
while(1)
{代码会一直死在这}
}
把这段代码屏蔽,修改为静态ip
pui8MACArray[0] = 2;
pui8MACArray[1] = 0;
pui8MACArray[2] = 0;
pui8MACArray[3] = 1;
pui8MACArray[4] = 2;
pui8MACArray[5] = 3;//伪造mac地址
ipaddr=inet_addr("192.168.1.33");
netmask=inet_addr("255.255.255.0");
gw=inet_addr("192.168.1.1");
lwIPInit(g_ui32SysClock, pui8MACArray, ipaddr, netmask, gw, IPADDR_USE_STATIC);
LocatorInit();// 在这里创建udp,绑定本地ip,端口23
LocatorMACAddrSet(pui8MACArray);
LocatorAppTitleSet("DK-TM4C129X enet_lwip");
httpd_init();//网页服务器
ROM_IntPrioritySet(INT_EMAC0, ETHERNET_INT_PRIORITY);
ROM_IntPrioritySet(FAULT_SYSTICK, SYSTICK_INT_PRIORITY);
到这里网络就算初始化完了。下载代码 在网络共享中心发现了本地连接,但是ping这个ip是没有任何响应的,不知为何
while(1)
{
ui32NewIPAddress = lwIPLocalIPAddrGet();
UARTprintf("ip:%d,%d,%d,%d\r\n",addr[3]=(ui32NewIPAddress >> 24) & 0xff,
addr[2]=(ui32NewIPAddress >> 16) & 0xff,
addr[1]=(ui32NewIPAddress >> 8) & 0xff,
addr[0]= ui32NewIPAddress & 0xff);
ROM_GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, GPIO_PIN_6);
ROM_SysCtlDelay(10000000);
ROM_GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, 0);
ROM_SysCtlDelay(10000000);
}
我一直打印ip地址,刚上电的时候ip全是255,过几秒ip就一直是0了~~~
代码上传好几次都失败了~留个Q 778575669
Seven Han:
增大堆栈能否解决。
设置断点,尝试找出从哪进去的 FaultISR;
https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/374640
yasheng zhang:
回复 Seven Han:
你好 堆栈是在启动文件里设置吗
Stack EQU 0x00000800
Heap EQU 0x00000000
为何第二个设置的是0呢? 尝试改大了 也不行
ip一直是0的问题解决了 是因为auto ip的宏忘关了 现在lwIPLocalIPAddrGet可以获取到ip了 本地连接也有 但就是ping不通
yasheng zhang:
回复 Seven Han:
请问 SW-EK-TM4C129EXL-2.1.4.178.exe 和SW-DK-TM4C129X-2.1.4.178.exe 这两个有什么区别呢? 我对比下代码 前里面有液晶的初始化 是跟开发板对应的吧?
第二个就是裸机的 是这样吗
xyz549040622:
回复 yasheng zhang:
分别对应官方DK和EK的板子,仅此而已。EK相当于一个最小系统板,官方都有原理图的。