STM32 + LWIP - Pbuf 配置

Posted

技术标签:

【中文标题】STM32 + LWIP - Pbuf 配置【英文标题】:STM32 + LWIP - Pbuf Configuration 【发布时间】:2017-01-01 07:03:44 【问题描述】:

我现在正在使用 LWIP+STM32,现在尝试从浏览器获取 http GET/POST。所以基本上,连接很好,我确实收到了带有以下代码的数据包:

if((err = netconn_recv(conn, &inbuf)) == ERR_OK) 

      netbuf_first(inbuf);

      do

          netbuf_data(inbuf, (void**)&buf, &buflen);
          //recieve_buffer=concat(recieve_buffer,buf);
          DBGSTR("%d",i);
          i++;
          while(netbuf_next(inbuf) >= 0);

但不知何故,它没有接收到整个数据包,即使接收缓冲区非常大,do-while 循环也总是运行一次。我检查了wireshark,内容主体确实发送了。我猜是因为pbuf不够分配。但是任何人都知道如何配置 pbuf。

【问题讨论】:

【参考方案1】:

LWIP 栈的配置可以在 lwip_opt.h 头文件中找到。 pbuf 缓冲区的大小由宏 PBUF_POOL_BUFSIZE 定义。将其与有效负载的大小进行比较。

还要注意,如果数据包太大,数据包可能会被分段,因此数据将存储在多个 pbuf 中。

【讨论】:

以上是关于STM32 + LWIP - Pbuf 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用STM32CubeMX配置ETH

LWIP学习之流程架构

怎么用stm32cubemx配置oled显示的参数

《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)

《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)

lwip Packet buffers (PBUF) API 操作 集合