打印
[STM32F1]

求助,STM32F107 以太网 UDP 死机

[复制链接]
909|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jks999|  楼主 | 2016-12-2 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题,网上买的开发板,STM32F107芯片使用 LWIP  UDP,开发板做服务器或者客户端,用网线与电脑通信。

故障,
1 如果电脑先启动完成,开发板再上电,UDP网络可以正常通信。
2 如果开发板先上电,电脑后上电,开发板以太网就死机,开发板必须要重启才能连上。

有什么办法能解决开发板死掉的问题,UDP似乎没办法检测连接状态?
  那个老板没办法解决,才来发帖求助。

部分程序如下:      


udp_RS485_server_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,struct ip_addr *addr, u16_t port)
{
         RS485_udp_pcb->remote_ip = *addr;
       
        RS485_dest_port = port;       
  //  RS485_dest_ip_addr = *addr;
        RS485_udp_pcb = pcb;
        RS485_dest_p = p;
        if(p != NULL)
        {       
                RS485_Send_Data(p->payload,p->tot_len);                 // payloadΪudpÊý¾Ý¿éµÄÆðʼλÖà      
                pbuf_free(p);                                                         /* ÊͷŸÃUDP¶Î */
        }
}

void UDP_server_init(void)
{
        struct udp_pcb *pcb;
  struct ip_addr ipaddr1;
       
       
        pcb = udp_new();                                                                //ÉêÇëudp¿ØÖÆ¿é
        udp_bind(pcb,IP_ADDR_ANY,RS232_SERVER_PORT);             /* °ó¶¨±¾µØIPµØÖ·ºÍ¶Ë¿ÚºÅ£¨×÷Ϊudp·þÎñÆ÷£© */
        udp_recv(pcb,udp_RS232_server_recv,NULL);                                 /* ÉèÖÃUDP¶Îµ½Ê±µÄ»Øµ÷º¯Êý */

        pcb = udp_new();                                                                //ÉêÇëudp¿ØÖÆ¿é
        udp_bind(pcb,IP_ADDR_ANY,RS485_SERVER_PORT);             /* °ó¶¨±¾µØIPµØÖ·ºÍ¶Ë¿ÚºÅ£¨×÷Ϊudp·þÎñÆ÷£© */
        udp_recv(pcb,udp_RS485_server_recv,NULL);                                 /* ÉèÖÃUDP¶Îµ½Ê±µÄ»Øµ÷º¯Êý */
       
//        IP4_ADDR(&ipaddr1,192,168,1,21);
        //udp_connect(pcb,&ipaddr1,RS485_SERVER_PORT); /* ?????? */
}


int main(void)
{
  struct udp_pcb *pcb;
       
  /* Setup STM32 system (clocks, Ethernet, GPIO, NVIC) and STM3210C-EVAL resources */
          System_Setup();      
  /* Initilaize the LwIP satck ipµØÖ·ÉèÖã¬macÉèÖã¬*/
    LwIP_Init();
        TIM_Configuration(RS232_TIMER_OUT);//¶¨Ê±Æ÷2ÅäÖᣵ¥Î»£ºms
          /* Initilaize the webserver module */
        UDP_server_init();
        while(1)
        {   

               
       
                System_Periodic_Handle();//×÷Ϊ·þÎñÆ÷µÄÀýÐÐʼþ·þÎñ£¬Ö÷ÒªÊǸüÐÂTCP timers
       
               
        }
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝