APM32F4在RT-Thread系统上使用LwIP网络功能—基于RT-Thread Studio环境
RT-Thread Studio 是RTT官方的一款集成开发环境,可以很方便的进行RT-Thread实时系统的程序开发,而且对应RT-Thread系统常用的组件可以进行图形化配置,非常的方便。
RT-Thread Studio可以访问官网 RT-Thread Studio 下载地址,在官网下载最新的 RT-Thread Studio 软件安装包。
下面基于 RT-Thread Studio ,把 LwIP 网络协议栈和RT-Thread系统移植到 APM32F4 上运行。
1. 创建APM32F4的工程项目
1、首先点击新建RT-Thread项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IecIpKB-1666625339065)(../picture/image-20221024215344825.png)]](/https://i-blog.csdnimg.cn/blog_migrate/0ad29d3041bcbd0a8f0837b035b852b0.png)
2、然后选择下面的配置,如果你的RTT Studio还没有APM32F4的软件包的话,选择添加更多资源,然后找到geehy厂商的软件包,然后安装即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RXdM7Pf-1666625339066)(../picture/image-20221024215616541.png)]](/https://i-blog.csdnimg.cn/blog_migrate/2b940fa48b9fa248c58a8945c153c1ad.png)
上面的一些配置可以看自己板子的实际情况进行选择,比如可以选择其他串口作为控制台,或者选择其他调试模式等等。最后点击完成即可。
2. 编译下载生成的基本工程项目
点击完成之后,就可以在左边的资源管理器看到生成的项目文件了,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OsIxDd0r-1666625339066)(../picture/image-20221024220110372.png)]](/https://i-blog.csdnimg.cn/blog_migrate/588a0a5f7c0048ca1d8a298126204390.png)
我们可以点击编译,可以看到编译完成没有任何警告和错误。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IuQh8Rdu-1666625339066)(../picture/image-20221024220158710.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5366c427ca24cae0bd9ec438b4e2d4ca.png)
这个时候,是可以把程序下载到我们的板子上运行的。下载程序后,打开串口终端软件,可以看到RT-Thread打印的信息,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1dhm9Hd-1666625339066)(../picture/image-20221024220405063.png)]](/https://i-blog.csdnimg.cn/blog_migrate/32df191ab51bdaead9325b10bb65beb8.png)
其中,程序会不断打印 Hello … 字符串,这是因为Main函数里面输出的打印,如果觉得占用了控制台可以把该语句屏蔽。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEBlHDKE-1666625339067)(../picture/image-20221024220542166.png)]](/https://i-blog.csdnimg.cn/blog_migrate/1db3e54668a16454b795c2d710c4e9cc.png)
3. 解决shell不能输入字符bug
这时,我们在串口终端发现,shell不能接收字符输入。这是一个bug,原因就是串口的GPIO配置有问题,我们把下面文件函数修改一下即可:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxvslNXH-1666625339067)(../picture/image-20221024220918532.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5fa4a41c2f83af98bae2a3b196ae0d43.png)
修改完之后,在重新编译下载,shell就可以正常输入字符、命令了,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8OXUoKT-1666625339067)(../picture/image-20221024221109120.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5f79035fd9f4bcdf2f9155df9b3ad208.png)
4. 使能网络接口设备和LwIP
双击打开配置文件 RT-Thread Settings , 然后找到组件这里,使能网络接口设备和LwIP堆栈。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DBAmjr95-1666625339068)(../picture/image-20221024221847519.png)]](/https://i-blog.csdnimg.cn/blog_migrate/d939e8b6428c15134ebc9ec440740465.png)
其中,我们点击使能之后,里面还有更详细的细节配置可供用户进行配置,比如是否使用DHCP进行动态获取IP地址等,这里我设置为静态IP,因为我没用插路由器。
然后点击保存后,再重新进行编译,可以看到没有任何警告和错误。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9eD3gA5Q-1666625339068)(../picture/image-20221024222419194.png)]](/https://i-blog.csdnimg.cn/blog_migrate/8f28ca9a245f6d761a51306ec62f6e5d.png)
这个时候,我们其实可以下载程序运行了的,但是网络功能是还不能正常使用的,因为底层的网络驱动文件还没编写。
下载程序后,在终端输入 ifconfig 命令,可以看到说网络设备有错误,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YjPSc3y0-1666625339069)(../picture/image-20221024222744222.png)]](/https://i-blog.csdnimg.cn/blog_migrate/4b1ecd4114e6389900cd54389d00af5f.png)
5. 添加RTT的网络驱动文件
这个驱动文件如果bsp包里面有的话,应该是可以配置加入 RTT Studio 里面的吧,但是APM32并没有这个文件的支持,所以只能我们自己编写这个网络驱动文件了,可以参考下面RTT官方文档的介绍,看看需要我们提供什么样的接口函数。
这里,我已经提前写好了这个文件,分别是 drv_eth.c 和 drv_eth.h 。我们把这两个文件复制到工程目录的drivers目录下。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssuM8lOb-1666625339069)(../picture/image-20221024223511374.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5ed2271d241702badc01e4ffecc3235b.png)
6. 然后打开 BSP_USING_ETH 宏定义
我们在 board.h 文件中,打开 BSP_USING_ETH 这个宏定义,以及定义 phy 物理芯片的型号(根据自己板子的芯片类型选择),如下:

本文详细介绍了如何在RT-Thread Studio环境下,将LwIP网络协议栈移植到APM32F4微控制器上,包括创建项目、配置网络组件、解决串口问题、编写网络驱动、配置MAC/IP、验证网络功能以及使用TCP客户端和服务器示例。过程中涉及串口配置、GPIO设置、PHY芯片复位、网络接口初始化等多个关键步骤。

4859

被折叠的 条评论
为什么被折叠?



