OpenEdv-开源电子网

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

stm32f4以太网,开发板做客户端,电脑做服务器的问题

[复制链接]

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
发表于 2017-10-17 18:00:19 | 显示全部楼层 |阅读模式
1金钱
这是f4开发板做客户端,电脑做服务器,有个疑问为何打印顺序是2222444443333333,按顺序执行程序就该是234啊
if(tcp_echoclient_pcb!=NULL)
  {
                printf("2222");
                IP4_ADDR(&rmtipaddr,remoteip[0],remoteip[1],remoteip[2],remoteip[3]);
                tcp_connect(tcp_echoclient_pcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);       
                printf("44444");
}

err_t tcp_client_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
{
        struct tcp_client_struct *es=NULL;  
       
        if(err==ERR_OK)   
        {
                es=(struct tcp_client_struct*)mem_malloc(sizeof(struct tcp_client_struct));  //éêÇëÄú′æ
                if(es) //Äú′æéêÇë3é1|
                {
                        printf("33333333");
                        es->state=ES_TCPCLIENT_CONNECTED;//×′ì¬Îaᬽó3é1|
                        es->pcb=tpcb;  
                        es->p=NULL;
                        tcp_arg(tpcb,es);                                //ê1óÃes¸üDÂtpcbμÄcallback_arg
                        tcp_recv(tpcb,tcp_client_recv);          //3õê¼»ˉLwIPμÄtcp_recv»Øμ÷1|Äü   
                        tcp_err(tpcb,tcp_client_error);         //3õê¼»ˉtcp_err()»Øμ÷oˉêy
                        tcp_sent(tpcb,tcp_client_sent);                //3õê¼»ˉLwIPμÄtcp_sent»Øμ÷1|Äü
                        tcp_poll(tpcb,tcp_client_poll,1);         //3õê¼»ˉLwIPμÄtcp_poll»Øμ÷1|Äü
                        tcp_client_flag|=1<<5;                                 //±ê&#188;&#199;á&#172;&#189;óμ&#189;·t&#206;&#241;&#198;÷á&#203;
                        err=ERR_OK;
                        printf("tcp_client_flag=%d",tcp_client_flag);
                }else
                {
                        tcp_client_connection_close(tpcb,es);//1&#216;±&#213;á&#172;&#189;ó
                        err=ERR_MEM;        //·μ&#187;&#216;&#196;ú′&#230;·&#214;&#197;&#228;′í&#206;ó
                        printf("55555555");
                }
        }else
        {
                tcp_client_connection_close(tpcb,0);//1&#216;±&#213;á&#172;&#189;ó
        }
        return err;
}



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-10-18 00:30:13 | 显示全部楼层
回复

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-18 10:14:26 | 显示全部楼层
有朋友帮忙解答下吗
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2017-10-18 13:22:02 | 显示全部楼层
把tcp_connect()源码贴出来,tcp_client_connected是回调函数 可能不是马上执行,满足回调条件才会执行
回复

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-19 15:59:59 | 显示全部楼层
1375917982gxut 发表于 2017-10-18 13:22
把tcp_connect()源码贴出来,tcp_client_connected是回调函数 可能不是马上执行,满足回调条件才会执行

恩恩就是这个原因,谢谢
回复

使用道具 举报

26

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2016-7-1
在线时间
28 小时
 楼主| 发表于 2017-10-19 16:03:43 | 显示全部楼层
在问个问题,我用的接收中断,我开的全局中断,为啥一进来就一直停在中断里了,一直打印fffff
void ETH_IRQHandler(void)
{
         printf("ffffff");
         while(ETH_GetRxPktSize(ETH_Handler.RxDesc))//是否有数据
         {
            MX_LWIP_Process();//把数据交给lwip处理
         }
    __HAL_ETH_DMA_CLEAR_IT(&ETH_Handler,ETH_DMA_IT_NIS);    //清除中断
    __HAL_ETH_DMA_CLEAR_IT(&ETH_Handler,ETH_DMA_IT_R);      //

}
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2017-10-20 09:16:14 | 显示全部楼层
修炼人生 发表于 2017-10-19 16:03
在问个问题,我用的接收中断,我开的全局中断,为啥一进来就一直停在中断里了,一直打印fffff
void ETH_IR ...

理解错误,应该是一直产生中断,可能while条件没满足,所以不执行lwip部分
回复

使用道具 举报

4

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2017-3-11
在线时间
78 小时
发表于 2017-10-20 09:52:52 | 显示全部楼层
你猜啊啊啊啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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