你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f107vct6+FreeRTOS+LWIP UDP数据发送问题

[复制链接]
Mr_Zhou 提问时间:2018-4-25 18:09 /
非常感谢你的观看,我在用STM32CUBEMx +FreeRTOS+LWIP遇到一些问题,希望能指导一下
配置:cpu是stm32f107vct6  、PHY是DP83848、LWIP是UDP通信,选择disable DHCP
我用了两个版本的CUBEMx,建立了两个工程(两个工程里面用的udpclient.C.H和83848.C.H都是一样的) 我来列举一下我的问题
工程太大,只能以网盘的方式发送链接:https://pan.baidu.com/s/1TQupZ0mEOokFegyCchk93g  密码:rk0k
1.开始使用的是STM32CubeMX-4.15.0版本
我建立了OldETH文件的工程,在 MX_LWIP_Init()之后使用UDP_client_init(server_ip,server_port)来绑定IP和port,我成功的ping通了,udp中断接收数据没问题,但是我udp发送数据的时候出问题了。
我是通过UDP_DataSend(u8* buf,u8 len)这个函数来发送数据的,
uint8_t  UDPData[20]="I am udp client!\r\n";

void UDP_DataSend(u8* buf,u8 len)
{
    struct pbuf  *udp_pbuf;                                    
    udp_pbuf=pbuf_alloc(PBUF_RAW,len,PBUF_RAM);                                                             
    if(udp_pbuf != NULL)
    {   
       udp_pbuf -> payload = buf;                 
        udp_send(udp_pcb,udp_pbuf);   //udp_pcb是 UDP_client_init建立的udp控制块                  
    }
      pbuf_free(udp_pbuf);
}

当我发送测试数据UDP_DataSend(UDPData,sizeof(UDPData)) 这个是没有问题的,
然而当我要发送我以太网接受回调中所接受到的数据时,UDP_DataSend(udpReceiveData.buf,udpReceiveData.len)出错了,我必须将UDP_DataSend函数改成下面这样才能发送成功,要不然就会进入HardFault_Handler出错中断里面,这是我不能理解的
void UDP_DataSend(u8* buf,u8 len)
{
    struct pbuf  *udp_pbuf;                                    
    udp_pbuf=pbuf_alloc(PBUF_RAW,len,PBUF_RAM);                                                             
    if(udp_pbuf != NULL)
    {
        uint8_t UDPDataSendBuf[256];
        memcpy(UDPDataSendBuf,buf,len);
       udp_pbuf -> payload = UDPDataSendBuf;                 
        udp_send(udp_pcb,udp_pbuf);   //udp_pcb是 UDP_client_init建立的udp控制块                  
    }
      pbuf_free(udp_pbuf);
}


2.使用的是新版STM32CubeMX-4.25.0版本
建立了NewETH文件里面的工程,在 MX_LWIP_Init()之后使用UDP_client_init(server_ip,server_port)来绑定IP和port,这时候我也ping通了,也能接收数据了。问题来了,现在不管是发送测试数据还是发送以太网接受回调中所接受到的数据都进入HardFault_Handler出错中断里面。

以上就是我现在遇到的问题,感谢你的帮忙

收藏 评论3 发布时间:2018-4-25 18:09

举报

3个回答
butterflyspring 回答时间:2018-5-7 12:00:19
所以你用了新版本的cubeMx,用了临时的buffer也报错?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Mr_Zhou 回答时间:2018-5-7 17:58:41
butterflyspring 发表于 2018-5-7 12:00
所以你用了新版本的cubeMx,用了临时的buffer也报错?

对的,不知道什么原因
butterflyspring 回答时间:2018-5-9 14:36:33
我之前移植一个NFC的代码,也是出现国这种诡异的问题,但是我觉得是编译器的问题,你可以试一下将优化去掉,或者换一个IDE试一下,我当时去掉优化就没有hardfault了,换了IDE也是没有了.

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版