从零实现 LWIP 二(UDP、无DHCP)

从零实现 LWIP 一(配置过程)

从零实现 LWIP 三(TCP客户端服务端、静态IP)

从零实现 LWIP 四(一对一 UDP、TCP客户端 DHCP 网线热插拔和自动重新连接)

上一章是cubemx的配置过程,那么本章将要实现具体的UDP功能。

我们先来了解一下LWIP分层结构:

UDP是不需要握手的,但是也需要在同一个网关中。如果作为client,需要知道目标地址;如果作为server,则需要允许同一个网关中的所有IP与其进行连接。

这部分应用层的代码来自:stm32+lwip(一):使用STM32CubeMX生成项目(必看),该作者是54zorb,代码风格非常好。

在看代码时需要注意两个结构体,一个结构体是在LWIP.c中的全局网络接口控制块 struct netif gnetif;

另一个是局部UDP控制块 static struct udp_pcb *upcb;

一个UDP client、UDP server实现的过程如下:

初始化以太网->初始化LWIP->初始化udp client或server(主要是建立UDP控制块、注册接收回调函数)

在while(1)循环调用LWIP处理函数MX_LWIP_Process();(执行具体的通讯操作)

这样就是LWIP的作者的设计思想,将数据处理过程与通讯处理分开,这样通讯效率最高。


代码部分还需要详细看工程,就不再赘述了。

此外实验环境是用开发板与计算机相连,我们看到这是让计算机也使用静态IP方便调试。

此时,开启网络调试助手,发现能够连接上,但是发送数据失败。也能够ping通

百度后发现还需要关闭win10的防火墙,全部关闭

再次建立连接,再次发送成功了。


总结:在防火墙那里卡了很久,如果不是百度真的解决不了,这不是代码层面的问题了。

需要对代码的层次先进行了解,因为LWIP的文件非常多,多看看这张图,以及LwIP协议栈的设计与实现_中文译稿.pdf 。


参考资料:原子的STM32F429开发指南HAL.pdf、LwIP协议栈的设计与实现_中文译稿.pdf 

STM32CubeMX系列教程27:ETH

stm32+lwip(一):使用STM32CubeMX生成项目(必看)

STM32407+LAN8720A+LWIP 实现TCP Client

非常感谢他们的分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值