完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
参考NETCONN_TCP客户端实验 稍作修改在UCOS任务列表中只有一个TCP客户端任务 该任务不做任务切换 ,无限循环执行该任务 while(1) { netconn_write(conn,tcp_***uffer,520,NETCONN_COPY);//发送数据 } 循环发送conn为新创建的netconn连接,tcp_***uffer为520字节数组首地址,长度520字节。 此处图中Kbps 有误,实际为KBps这点我已经确认过了。得到网速约(7MB/S)。 while(1) { netconn_recv(conn,&recvbuf);//仅接收数据,数据不作任何处理 netconn_write(conn,tcp_***uffer,520,NETCONN_COPY); //发送数据 } 此处图中Kbps 有误,实际为KBps这点我已经确认过了。得到网速约(55KB/S)。 问题一:此函数netconn_recv(conn,&recvbuf)为网口接收函数,加了此函数严重影响通信速度,小弟想通过读取寄存器标志或其他状态标志判断网口是否接收到数据,使网速依旧能保持(7MB/S)如: while(1) { if(ETH_Handler.RxFrameInfos.length>60)//接收到数据 { //解析接收到的数据 } netconn_write(conn,tcp_***uffer,520,NETCONN_COPY); //发送数据 } 这样做确实可以让发送速度保持在(7MB/S)但是这个判断存在问题, TCP自身协议通信如握手包,NAK包等通信时ETH_Handler.RxFrameInfos.length该值也会改变。 这个值是从网口中断服务函数void ETH_IRQHandler(void)中得到的。 有没有大神知道网口通信可以通过读取哪个寄存器或者判断哪个标志可以判断接收到网口数据了?或者采用其他的方式,只需网速能保持在(3MB/S)以上即可。 问题二: while(1) { netconn_write(conn,tcp_***uffer,520,NETCONN_COPY);//发送数据 } 仅发送函数无限循环,无接收函数,TCP服务器发送数据20次后程序停止,硬件仿真程序一直在网口中断服务函数,大神知道原因吗? 以下为修改过的程序源码:
STM32F429程序.rar
(1.5 MB, 下载次数: 23
)
|
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2234 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2053 浏览 3 评论
4664 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2197 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2734 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:01 , Processed in 0.689045 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号