我使用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();上,能执行到这里
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)中断也进不去,不知道是什么原因
仔细检查了一下硬件电路,没发现什么原因
请问哪位大侠遇到过类似问题么
多谢了!