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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版