OpenEdv-开源电子网

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

请教一下大家,UCOS+LWIP中的问题

[复制链接]

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2013-4-3
在线时间
2 小时
发表于 2015-1-12 19:17:24 | 显示全部楼层 |阅读模式
5金钱
最近在看STM32中UCOS+LWIP的例程。有几点疑问?
1:LWIP扩展例程\网络实验8\NETCONN_TCP客户端例程中,创建了static void tcp_client_thread(void *arg)这个线程,
     怎么没有在这个函数中看见延时函数,不是说要有延时函数才能让出CPU使用权吗?
   while(1)
{
if((tcp_client_flag & LWIP_SEND_DATA) == LWIP_SEND_DATA) //????????·???
{
err = netconn_write(tcp_clientconn ,tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf),NETCONN_COPY); //·???tcp_server_sentbuf????????
if(err != ERR_OK)
{
printf("·????§°?\r\n");
}
tcp_client_flag &= ~LWIP_SEND_DATA;
}

if((recv_err = netconn_recv(tcp_clientconn,&recvbuf)) == ERR_OK)  //??????????
{
OS_ENTER_CRITICAL(); //??????
memset(tcp_client_recvbuf,0,TCP_CLIENT_RX_BUFSIZE);  //??????????????????
for(q=recvbuf->p;q!=NULL;q=q->next)  //±é?ú?ê????pbuf??±í
{
//????????±???TCP_CLIENT_RX_BUFSIZE??????????·??ó??TCP_CLIENT_RX_BUFSIZE?????à???????????ó??
//???°??????±?TCP_CLIENT_RX_BUFSIZE?????à?¤??????????·??ò???°????±??ù????????
if(q->len > (TCP_CLIENT_RX_BUFSIZE-data_len)) memcpy(tcp_client_recvbuf+data_len,q->payload,(TCP_CLIENT_RX_BUFSIZE-data_len));//??±?????
else memcpy(tcp_client_recvbuf+data_len,q->payload,q->len);
data_len += q->len;  
if(data_len > TCP_CLIENT_RX_BUFSIZE) break; //????TCP???§????????×é,????
}
OS_EXIT_CRITICAL();  //??????
data_len=0;  //?????ê???ódata_len????????
printf("%s\r\n",tcp_client_recvbuf);
netbuf_delete(recvbuf);
}else if(recv_err == ERR_CLSD)  //??±?????
{
netconn_close(tcp_clientconn);
netconn_delete(tcp_clientconn);
printf("·????÷%d.%d.%d.%d????????\r\n",lwipdev.remoteip[0],lwipdev.remoteip[1], lwipdev.remoteip[2],lwipdev.remoteip[3]);
break;
}
}

2:任务中的延时函数,延时时长,是怎么确定的?有什么要求?
比如OSTimeDlyHMSM(0,0,0,500);  //

刚看UCOS这块,看了原子哥的教程, 现在还在学习,希望大家能帮忙解答一下。

最佳答案

查看完整内容[请看2#楼]

让出CPU的使用权并不一定要调用OSTimeDlyHMSM()这个函数,等待信号量、等待消息邮箱都可以的让出CPU的使用权。的。在这个例程中netconn_recv()函数就是一个在指定时间内等待消息的函数,在等待消息的时候就会让出CPU使用权!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-1-12 19:17:25 | 显示全部楼层
让出CPU的使用权并不一定要调用OSTimeDlyHMSM()这个函数,等待信号量、等待消息邮箱都可以的让出CPU的使用权。的。在这个例程中netconn_recv()函数就是一个在指定时间内等待消息的函数,在等待消息的时候就会让出CPU使用权!
开往春天的手扶拖拉机
回复

使用道具 举报

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2013-4-3
在线时间
2 小时
 楼主| 发表于 2015-1-13 13:32:05 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
恩,好的,谢谢啦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 18:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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