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

stm32f107调用lwip的udp接收数据出问题

[复制链接]
bwave 提问时间:2021-1-29 16:02 /
static void udp_server_receive_callback(void *arg, struct udp_pcb *upcb,
    struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
    uint32_t i;

    /* 数据回传 */
    udp_sendto(upcb, p, addr, port);

    /* 打印接收到的数据 */
    printf("get msg from %d:%d:%d:%d port:%d:\r\n",
        *((uint8_t *)&addr->addr), *((uint8_t *)&addr->addr + 1),
        *((uint8_t *)&addr->addr + 2), *((uint8_t *)&addr->addr + 3), port);

    if (p != NULL) {
        struct pbuf *q = p;
        while(q != NULL) {
            //此处接收长度由问题
            printf("len=%u\r\n", q->len);
            for (i = 0; i < q->len; i++) {
                printf("%X ", *((char *)q->payload + i));
            }
            q = q->next;
        }
        printf("\r\n");
    }

    /* 释放缓冲区数据 */
    pbuf_free(p);
}
这个接收回调函数数据回传是对的,但是打印出来的长度和数据都不对
发送:1234567890
接收打印信息:
get msg from 192:168:68:100 port:777:
len=52
3C 52 82 51 3A 6C 0 80 E1 0 0 0 8 0 45 0 0 26 0 35 0 0 FF 11 B1 98 C0 A8 44 44 C0 A8 44 64 22 B0 3 9 0 12 C6 12 31 32 33 34 35 36 37 38 39 30

请教一下是哪里出了问题?


收藏 评论3 发布时间:2021-1-29 16:02

举报

3个回答
bwave 回答时间:2021-2-1 17:12:22
程序是STM32CUBE生成的,TCP调试没发现这个问题,为啥UDP会出现这个现象呢?
bwave 回答时间:2021-2-1 17:23:29
STM32CUBE版本:6.0.1
firmware:STM32Cube FW_F1 V1.8.1
网口芯片:DP83848IVVX
bwave 回答时间:2021-2-1 17:27:25
从数据可以看出发送的数据是收到了,但是带了MAC地址和IP地址等一些信息,按理说官方工具生成的代码不应该有问题啊,实在搞不懂哪里出了问题

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版