STM32F4 LWIP 在固定发送编号后冻结

问题描述

我使用的是带有 LWIP v 2.1.2 的 nucleo f429zi。文档指出,对于 TX 缓冲区,应该使用 PBUF_RAM。在我的情况下,整个 LWIP 堆栈在 28 次发送消息后冻结。当我将 pbuf 类型更改为 PBUF_POOL 时,一切都像魅力一样。虽然在文档中写到这种类型应该用于 RX 缓冲区。 这是我对udp回调函数的实现

void
udp_descserver_receive_callback(void *arg,struct udp_pcb *upcb,struct pbuf *p,const ip_addr_t *addr,u16_t port) {

uint8_t triesNumber = 0;
err_t error;    
udp_connect(upcb,addr,port);
pbuf_free(p);
p = NULL;
p = pbuf_alloc(PBUF_TRANSPORT,sizeof(PING_INFO),PBUF_POOL);
if(p != NULL) {
    pbuf_take(p,&pingInfo,sizeof(PING_INFO));
    do {
        error = udp_send(upcb,p);
        triesNumber++;
    } while (error && triesNumber < RESEND_TRIES);
}
pbuf_free(p);
udp_disconnect(upcb);
}

我的问题是,为什么与文档相反的方法有效。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)