完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[C] 纯文本查看 复制代码
各位大神,请问下[C] 纯文本查看 复制代码 在lan8720.c文件中的接收一个数据包函数中[C] 纯文本查看 复制代码 //接收一个网卡数据包//返回值:网络数据包帧结构体FrameTypeDef ETH_Rx_Packet(void){ u32 framelength=0;FrameTypeDef frame={0,0}; //检查当前描述符,是否属于ETHERNET DMA(设置的时候)/CPU(复位的时候)if((DMARxDescToGet->StatusÐ_DMARxDesc_OWN)!=(u32)RESET){frame.length=ETH_ERROR; if ((ETH->DMASRÐ_DMASR_RBUS)!=(u32)RESET) { ETH->DMASR = ETH_DMASR_RBUS;//清除ETH DMA的RBUS位 ETH->DMARPDR=0;//恢复DMA接收}return frame;//错误,OWN位被设置了} if(((DMARxDescToGet->StatusÐ_DMARxDesc_ES)==(u32)RESET)&& ((DMARxDescToGet->Status & ETH_DMARxDesc_LS)!=(u32)RESET)&& ((DMARxDescToGet->Status & ETH_DMARxDesc_FS)!=(u32)RESET)) { framelength=((DMARxDescToGet->StatusÐ_DMARxDesc_FL)>>ETH_DMARxDesc_FrameLengthShift)-4;//得到接收包帧长度(不包含4字节CRC) frame.buffer = DMARxDescToGet->Buffer1Addr;//得到包数据所在的位置}else framelength=ETH_ERROR;//错误 frame.length=framelength; frame.descriptor=DMARxDescToGet; //更新ETH DMA全局Rx描述符为下一个Rx描述符//为下一次buffer读取设置下一个DMA Rx描述符DMARxDescToGet=(ETH_DMADESCTypeDef*)(DMARxDescToGet->Buffer2NextDescAddr); return frame; }上面这个函数中的这个条件可以同时成立吗?[C] 纯文本查看 复制代码 if(((DMARxDescToGet->StatusÐ_DMARxDesc_ES)==(u32)RESET)&& ((DMARxDescToGet->Status & ETH_DMARxDesc_LS)!=(u32)RESET)&& ((DMARxDescToGet->Status & ETH_DMARxDesc_FS)!=(u32)RESET))[mw_shl_code=c,true](DMARxDescToGet->Status & ETH_DMARxDesc_LS)!=(u32)RESET)这个为真,意思为帧的最后一个描述符,然而[mw_shl_code=c,true](DMARxDescToGet->Status & ETH_DMARxDesc_LS)!=(u32)RESET)这个为真,意思是第一个描述符?这样不会矛盾吗?[/mw_shl_code] [/mw_shl_code][C] 纯文本查看 复制代码 [C] 纯文本查看 复制代码 |
|
相关推荐
5个回答
|
|
买票排队,就一个人在排队,这个人是不是既是头又是尾?同样的,一个以太网数据帧全部放到一个描述符里面的话,你的疑问不就存在了?stm32f4X7_eth.h里面配置的一个以太网描述符的接收缓冲区就是1524,我们配置的LWIP的MTU不也是1500,也就是说网络发送过来的一帧数据不就刚好可以放到一个以太网描述符里面?
|
|
|
|
帮顶。。。。。。
|
|
|
|
谢谢!
|
|
|
|
首先,谢谢大神的答复。我有考虑到只用到一个描述符的情况,因为视频里经常讲解数据帧接收过来都以好几个描述符存储,所以就来论坛问问的。我还没学到配置LWIP,所以MTU是什么,估计要是我知道了,那么这个疑问也跟着解决了。
|
|
|
|
视频里面讲的话肯定要讲通用情况的,但是配置的时候就可以配置成特例的。一帧数据放到一个描述符里面的话效率就会高很多的,不需要处理好几个描述符才提取一帧的数据。但是缺点就是费ram,一个描述符的缓冲区就要1524的字节
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2569 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2365 浏览 5 评论
3210 浏览 3 评论
2837 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2789 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
668浏览 1评论
905浏览 0评论
1026浏览 0评论
671浏览 0评论
499浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:42 , Processed in 1.180408 second(s), Total 84, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号