OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6123|回复: 4

关于stm32f4以太网通讯,HAL库,搞了很久了,一直不通

[复制链接]

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
发表于 2017-10-16 17:51:00 | 显示全部楼层 |阅读模式
我是用原子的程序,只是改成了HAL库,电脑做服务器,开发板做客户端,
void tcp_client_test(void)
{
        struct tcp_pcb *tcppcb;          //¶¨òåò»¸öTCP·tÎñÆ÷¿ØÖÆ¿é
       
        extern ip4_addr_t  rmtipaddr;          //Ô¶¶ËipμØÖ· //这个定义和标准库的不一样 吗,这是标准库的        struct ip_addr rmtipaddr;          //Ô¶¶ËipμØÖ·
       
        uint8_t key;
        uint8_t res=0;               
        uint8_t t=0;
        uint8_t connflag=0;                //ᬽó±ê¼Ç
       
        tcp_client_set_remoteip();//ÏèÑ¡ÔñIP
        printf("KEY0:Send data\r\n");  
        printf("KEY_UPuit\r\n");  
        printf("Local IP:%d.%d.%d.%d\r\n",IP_ADDRESS[0],IP_ADDRESS[1],IP_ADDRESS[2],IP_ADDRESS[3]);  
        printf("Remote IP:%d.%d.%d.%d\r\n",remoteip[0],remoteip[1],remoteip[2],remoteip[3]);//远端ip
        printf("Remote Port:%d\r\n",TCP_CLIENT_PORT);//端口号
        printf("STATUSisconnected\r\n");
        tcppcb=tcp_new();        //创建一个控制块
        if(tcppcb)                        //
        {//程序到这就是连不上
                IP4_ADDR(&rmtipaddr,remoteip[0],remoteip[1],remoteip[2],remoteip[3]);
                tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);  //连接到服务器
        }else res=1;
        while(res==0)
        {
                key=KEY_Scan(0);
                if(key==WKUP_PRES)break;
                if(key==KEY0_PRES)//KEY0°′ÏÂáË,·¢Ëíêy¾Y
                {
                        tcp_client_usersent(tcppcb);    //·¢Ëíêy¾Y
                }
                if(tcp_client_flag&1<<6)//ê&#199;·&#241;ê&#213;μ&#189;êy&#190;Y?
                {
                        printf("%d",tcp_client_recvbuf);//&#207;&#212;ê&#190;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y       
                        tcp_client_flag&=~(1<<6);//±ê&#188;&#199;êy&#190;Yò&#209;&#190;-±&#187;′|àíá&#203;.
                }
                if(tcp_client_flag&1<<5)//ê&#199;·&#241;á&#172;&#189;óé&#207;?
                {
                        printf("connflag=%d",connflag);
                        if(connflag==0)
                        {
                                printf("STATUS:Connected \r\n  ");//ìáê&#190;&#207;&#251;&#207;¢               
                                printf("Receive Data:\r\n");//ìáê&#190;&#207;&#251;&#207;¢               
                                connflag=1;//±ê&#188;&#199;á&#172;&#189;óá&#203;
                        }
                }else if(connflag)
                {
                        printf("STATUSisconnected");
                        connflag=0;        //±ê&#188;&#199;á&#172;&#189;ó&#182;&#207;&#191;aá&#203;
                }
                lwip_periodic_handle();
                HAL_Delay(2);
                t++;
                if(t==200)
                {
                        if(connflag==0&&(tcp_client_flag&1<<5)==0)//&#206;′á&#172;&#189;óé&#207;,&#212;ò3¢ê&#212;&#214;&#216;á&#172;
                        {
                                tcp_client_connection_close(tcppcb,0);//1&#216;±&#213;á&#172;&#189;ó
                                tcppcb=tcp_new();        //′′&#189;¨ò&#187;&#184;&#246;D&#194;μ&#196;pcb
                                if(tcppcb)                        //′′&#189;¨3é1|
                                {
                                        tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);//á&#172;&#189;óμ&#189;&#196;&#191;μ&#196;μ&#216;&#214;·μ&#196;&#214;&#184;&#182;¨&#182;&#203;&#191;úé&#207;,μ±á&#172;&#189;ó3é1|oó&#187;&#216;μ÷tcp_client_connected()oˉêy
                                }
                        }
                        t=0;
                        LED0;
                }               
        }
        tcp_client_connection_close(tcppcb,0);//1&#216;±&#213;TCP Clientá&#172;&#189;ó
        //myfree(SRAMIN,tbuf);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-16 17:54:25 | 显示全部楼层
这还用cube自动生成的配置函数
void MX_LWIP_Init(void)
{
  /* IP addresses initialization */
  IP_ADDRESS[0] = 192;
  IP_ADDRESS[1] = 168;
  IP_ADDRESS[2] = 1;
  IP_ADDRESS[3] = 30;
  NETMASK_ADDRESS[0] = 255;
  NETMASK_ADDRESS[1] = 255;
  NETMASK_ADDRESS[2] = 255;
  NETMASK_ADDRESS[3] = 0;
  GATEWAY_ADDRESS[0] = 192;
  GATEWAY_ADDRESS[1] = 168;
  GATEWAY_ADDRESS[2] = 1;
  GATEWAY_ADDRESS[3] = 1;
  
  /* Initilialize the LwIP stack without RTOS */
  lwip_init();

  /* IP addresses initialization without DHCP (IPv4) */
  IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]);
  IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]);
  IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]);

  /* add the network interface (IPv4/IPv6) without RTOS */
  netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);

  /* Registers the default network interface */
  netif_set_default(&gnetif);

  if (netif_is_link_up(&gnetif))
  {
    /* When the netif is fully configured this function must be called */
    netif_set_up(&gnetif);
  }
  else
  {
    /* When the netif link is down this function must be called */
    netif_set_down(&gnetif);
  }
回复 支持 反对

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-16 17:54:49 | 显示全部楼层
求大神帮忙看看,可能哪里出问题了
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-10-16 17:57:52 | 显示全部楼层
HAL库的参考F429开发板的例程,F429开发板的网络就是HAL库版本的
回复 支持 反对

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-17 09:24:34 | 显示全部楼层
zuozhongkai 发表于 2017-10-16 17:57
HAL库的参考F429开发板的例程,F429开发板的网络就是HAL库版本的

好的,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表