我使用STM32F407 LWIP 没使用操作系统,采用的LAN8702 代码执行的正常 delay_init(84); uart_init(9600); Init_IO(); Init_Time2(); My_RTC_Init(); //³õʼ»¯RTC NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃϵͳÖжÏÓÅÏȼ¶·Ö×é2 mymem_init(SRAMIN); //³õʼ»¯ÄÚ²¿ÄÚ´æ³Ø mymem_init(SRAMEX); //³õʼ»¯ÍⲿÄÚ´æ³Ø mymem_init(SRAMCCM); //³õʼ»¯CCMÄÚ´æ³Ø while(lwip_comm_init()!=0); while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//µÈ´ýDHCP»ñÈ¡³É¹¦/³¬Ê±Òç³ö { lwip_periodic_handle(); } while(1)//µÈ´ýDHCP»ñÈ¡³É¹¦/³¬Ê±Òç³ö { lwip_periodic_handle(); } 代码在最后 lwip_periodic_handle(); 里循环,但是我把网线接到HUB上,HUB的灯不亮,而且在网络上用其他计算机也找不到这个设备 请问哪位大侠调试过LWIP,可否指点一二,多谢了! |
你确定代码执行到最后了吗
你确定代码执行到最后了吗
将断电放在 while(1)//µÈ´ýDHCP»ñÈ¡³É¹¦/³¬Ê±Òç³ö { lwip_periodic_handle(); } 里的 lwip_periodic_handle();上,能执行到这里
建议 你参考st的lwip的官方例程。
最开始有问题是一个电阻焊接的不对,焊接正常后发现程序卡在 rval=ETH_Init(Ð_InitStructure,LAN8720_PHY_ADDRESS); //ÅäÖÃETH 这里,rval 返回的值不对,在网上看到文章,将 // ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; //¿ªÆôÍøÂç×ÔÊÊÓ¦¹¦ÄÜ ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;//hank rval 正常了 但是 DHCP 就还是不对,调试发现 void ETH_IRQHandler(void) { while(ETH_GetRxPktSize(DMARxDescToGet)!=0) //¼ì²âÊÇ·ñÊÕµ½Êý¾Ý°ü { lwip_pkt_handle(); } ETH_DMAClearITPendingBit(ETH_DMA_IT_R); ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS); } 这个中断从来进不去,查了很久硬件也没发现问题,请问有哪位大侠遇到过这个问题么 我用的就是ST的LWIP 的 正点原子 探索者的例子程序
之前能跳到最后是因为一个电阻焊接的不对,电阻焊接好以后 程序卡在 rval=ETH_Init(Ð_InitStructure,LAN8720_PHY_ADDRESS); //ÅäÖÃETH 这里, 根据网上一个说法 将 // ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; //¿ªÆôÍøÂç×ÔÊÊÓ¦¹¦ÄÜ ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;//hank 改成Disable 后rval 返回正常 但是lwipdev.dhcpstatus 就是不对,为0XFF 所以还是能执行到最下面,但是显然没连接上网络 我初步看了一下程序 发现void ETH_IRQHandler(void)中断也进不去,不知道是什么原因 仔细检查了一下硬件电路,没发现什么原因 请问哪位大侠遇到过类似问题么 多谢了!