你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 LWIP 问题请教

[复制链接]
憨客鱼 提问时间:2020-10-8 15:10 /
我使用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,可否指点一二,多谢了!
收藏 评论5 发布时间:2020-10-8 15:10

举报

5个回答
陌路夕颜 回答时间:2020-10-9 10:07:15
你确定代码执行到最后了吗
憨客鱼 回答时间:2020-10-9 13:27:24
陌路夕颜 发表于 2020-10-9 10:07
你确定代码执行到最后了吗

   将断电放在   while(1)//µÈ´ýDHCP»ñÈ¡³É¹¦/³¬Ê±Òç³ö
        {
                lwip_periodic_handle();
        } 里的               lwip_periodic_handle();上,能执行到这里
三好学生 回答时间:2020-10-10 13:12:57
建议 你参考st的lwip的官方例程。
憨客鱼 回答时间:2020-10-11 14:00:49
最开始有问题是一个电阻焊接的不对,焊接正常后发现程序卡在
        rval=ETH_Init(&ETH_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 的 正点原子 探索者的例子程序

憨客鱼 回答时间:2020-10-11 14:23:05
之前能跳到最后是因为一个电阻焊接的不对,电阻焊接好以后
程序卡在        rval=ETH_Init(&ETH_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)中断也进不去,不知道是什么原因
仔细检查了一下硬件电路,没发现什么原因
请问哪位大侠遇到过类似问题么
多谢了!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版