完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我正在使用带有STM32F4微控制器的STM3240G卡。我会为电机控制生成PWM。但是,我需要使用udp协议处理来自以太网(RJ45)的主卡(beagle board)的数据。
我被卡住了,因为我找不到如何捕获从以太网线接收的数据。 我使用DMA控制器。我知道收到的数据存储在特定缓冲区(pbuf)中,但是当我尝试在LCD屏幕上屏蔽数据值时,没有任何反应。我还使用ETH_Get_Received_Frame()来访问ETH_DMADESCTypedef结构中的Buffer1Addr,但我无法恢复传入的数据。 我用 #done! 以上来自于谷歌翻译 以下为原文 Hi, I am using the STM3240G card with STM32F4 microcontrolleur. I would generate PWM for motor control. However, I need to handle data coming from a primary card ( beagle board) by ethernet (RJ45) with udp protocol. I am stuck because I don't find how I can capture the data received from the ethernet wire. I use DMA controlleur. I kwnow that data received is store in a specific buffer (pbuf) but when i try to screen the data value on the LCD screen, nothing happen. I also use the ETH_Get_Received_Frame() to reach the Buffer1Addr in a ETH_DMADESCTypedef structure, but I can't recover incoming data. I use #done! |
|
相关推荐
2个回答
|
|
解决了,我做了什么:
char temp [20]; data = malloc(20 * sizeof(* data)); tot_length = p-> tot_len; length = p-> LEN; data_addr = p-> payload; memcpy(数据,p->有效载荷,长度); LCD_ClearLine(行3); LCD_ClearLine(4号线); LCD_ClearLine(5号线); LCD_ClearLine(LINE6); LCD_ClearLine(Line7); LCD_ClearLine(Line8); LCD_SetTextColor(白色); sprintf(temp,''length:%X'',length); LCD_DisplayStringLine(Line4,(uint8_t *)temp); sprintf(temp,''tot_length:%X'',tot_length); LCD_DisplayStringLine(Line5,(uint8_t *)temp); sprintf(temp,''data_addr:%X'',data_addr); LCD_DisplayStringLine(Line6,(uint8_t *)temp); sprintf(temp,''dataCpyAd:%X'',data); LCD_DisplayStringLine(Line7,(uint8_t *)temp); LCD_SetTextColor(绿色); LCD_DisplayStringLine(Line8,(uint8_t *)data); 以上来自于谷歌翻译 以下为原文 Resolved, what i did : char temp[20]; data = malloc(20*sizeof(*data)); tot_length = p->tot_len; length = p-> len; data_addr = p->payload; memcpy (data, p->payload, length); LCD_ClearLine(Line3); LCD_ClearLine(Line4); LCD_ClearLine(Line5); LCD_ClearLine(Line6); LCD_ClearLine(Line7); LCD_ClearLine(Line8); LCD_SetTextColor(White); sprintf(temp,''length: %X'',length); LCD_DisplayStringLine(Line4, (uint8_t*)temp); sprintf(temp,''tot_length: %X'',tot_length); LCD_DisplayStringLine(Line5, (uint8_t*)temp); sprintf(temp,''data_addr: %X'',data_addr); LCD_DisplayStringLine(Line6, (uint8_t*)temp); sprintf(temp,''dataCpyAd: %X'',data); LCD_DisplayStringLine(Line7, (uint8_t*)temp); LCD_SetTextColor(Green); LCD_DisplayStringLine(Line8, (uint8_t*)data); |
|
|
|
我想念使用函数''memcpy(data,p-> payload,length);''
以上来自于谷歌翻译 以下为原文 I miss to use the function ''memcpy (data, p->payload, length);'' |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1358浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:30 , Processed in 2.179891 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号