STM32F767生成以太网工程不能发送数据

F767+LAN8742A+LwIP,使能DHCP,UDP协议,使用Cubemx生成了代码,可以ping通,可以收到接收回调函数,但是发送数据发不出去,下面是udp部分代码,请教



#include "stm32f7xx_hal.h"

#include "lwip.h"

#include "udp.h"

#include "string.h"

#include "udp_test.h"


/* 定义端口号 */

#define UDP_REMOTE_PORT    7 /* 远端端口 */

#define UDP_LOCAL_PORT     7 /* 本地端口 */


static struct udp_pcb *upcb;

/******************************************************************************

 * 描述  : 接收回调函数

 * 参数  : -

 * 返回  : 无

******************************************************************************/

static void udp_server_receive_callback(void *arg, struct udp_pcb *upcb,

    struct pbuf *p, const ip_addr_t *addr, u16_t port)

{

    /* 数据回传 */

    udp_sendto(upcb, p, addr, port);

    /* 释放缓冲区数据 */

    pbuf_free(p);

}


/******************************************************************************

 * 描述  : 初始化UDP服务器端

 * 参数  : 无

 * 返回  : 无

******************************************************************************/

void udp_server_init(void)

{

    struct udp_pcb *upcb;

    err_t err;


    /* 创建udp控制块 */

    upcb = udp_new();


    if (upcb)

    {

        /* 绑定端口接收,接收对象为所有ip地址 */

        err = udp_bind(upcb, IP_ADDR_ANY, UDP_LOCAL_PORT);


        if(err == ERR_OK)

        {

            /* 注册接收回调函数 */

            udp_recv(upcb, udp_server_receive_callback, NULL);

        }

        else

        {

            /* 删除控制块 */

            udp_remove(upcb);

            //printf("can not bind pcb\r\n");

        }

    }

}


/******************************************************************************

 * 描述  : 发送udp数据

 * 参数  : (in)pData 发送数据的指针

 * 返回  : 无

******************************************************************************/

void udp_client_send(char *pData)

{

    struct pbuf *p;


    /* 分配缓冲区空间 */

    p = pbuf_alloc(PBUF_TRANSPORT, strlen(pData), PBUF_POOL);


    if (p != NULL)

    {

        /* 填充缓冲区数据 */

        pbuf_take(p, pData, strlen(pData));


        /* 发送udp数据 */

        udp_send(upcb, p);

        

        /* 释放缓冲区空间 */

        pbuf_free(p);

    }

}


已邀请:

要回复问题请先登录注册