STM32移植LWIP

STM32移植LWIP本文使用的是STM32F207VCT6平台,MII接口的RTL8201EL网络芯片,LWIP版本是1.4.1基础工程是:已经实现了10ms定时,led灯1s闪烁,还有串口打印欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转本文使用的IDE是IAR7.2,考虑到很多很使用Keil,本文末尾也有keil版本的说明添加以太网驱动库添加进工程,增加新库的头文件路径将LWIP源码放入目录中我们把s…

大家好,又见面了,我是你们的朋友全栈君。

目录

01、IAR工程移植

02、修改Keil工程


在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。

有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。

我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。

移植前和移植后源码资料,还有LWIP的源码下载链接

链接:百度网盘 请输入提取码

提取码:4hiw

01、IAR工程移植

首先是IAR工程的移植操作。

添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。

图片

把以太网驱动库添加进工程

图片

增加新库的头文件路径

图片

将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。

图片

我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h

图片

修改文件名称

图片

当然新加的头文件,要添加新的头文件路径。

图片

注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。

图片

添加以太网RTL8201EL的驱动程序

我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。

图片

放入对应的位置

图片

然后把BSP硬件驱动添加进入工程

图片

添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口

图片

添加API相关文件

图片

添加Netif相关文件

图片

添加IPV4相关文件

图片

当然,还要添加头文件路径,这是必不可少的

图片

添加中间文件

图片

添加lwipopts.h

图片

编译出错

图片

这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉

图片

再编译,出新的错误,再次屏蔽这些现实部分的代码。

图片

修改之后,编译没有问题

图片

复制驱动,直接使用官方demo的文件,

图片

拷贝ethernetif.c文件

图片

拷贝lwipopts.h文件。

图片

把原来的文件删除掉

图片

重新添加我们新添加的文件(注意解除只读属性)

修改文件

图片

新建lwip_app.c和lwip_app.h文件

图片

添加LwIP_Init函数接口。

图片

增加LwIP_Pkt_Handle函数。

图片

定义一下宏

图片

包头文件包含一下

图片

修改函数

图片

修改主函数

图片

使用PC端ping一下开发板的IP

图片

移植成功,可以正常响应ping。

这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。

02、修改Keil工程

添加文件,这些基本和IAR一样。

图片

添加头文件路径

图片

编译代码,有1个错误

图片

在timers.c添加

图片

代码如下

#if defined   (__CC_ARM) /*!< ARM Compiler */ 
    u32_tsys_now(void){} 
#endif
​​​​编译下载,发现ping会死机修改代码优化等级就好了

图片

测试成功

图片

总结:这是一篇流水账的移植记录,深入了解LWIP网络开发,还是要动手自己移植多多研究源码

点击查看本文所在的专辑,STM32F207网络开发

关注公众号,第一时间收到文章更新

STM32移植LWIP

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162095.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pc端媒体查询常见的尺寸_头条视频规定多少尺寸

    pc端媒体查询常见的尺寸_头条视频规定多少尺寸PC端按屏幕宽度大小排序

    2025年6月5日
    1
  • servlet的工作原理_servlet的作用

    servlet的工作原理_servlet的作用1.Servlet容器Servlet是运行Servlet容器的基础之上的,所以了解Servlet工作原理就得先从Servlet容器说起,以Tomact为例:在Tomact容器等级中,Context容器直接管理Servlet在容器中的包装类Wrapper,每个Context对应一个Web项目,所以Context如何运行直接影响到Servlet的运行。1

    2022年10月4日
    3
  • phpMyAdmin安装配置教程

    phpMyAdmin安装配置教程phpMyAdmin就是一种MySQL的管理工具,安装该工具后,即可以通过Web形式直接管理MySQL数据库,不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者。一、我们从phpMyAdmin官网上下载该软件,然后将该软件压缩放置xampp目录下。​二、复制PHP文件config.sample.inc文件并改名为config.inc,并做如下修改:​注意:因为XAMPP包含了Apache、MySQL、PHP、PERL,它在安装时

    2022年5月31日
    41
  • 智能家居、智慧社区与智慧城市的关系_智能家居有哪些

    智能家居、智慧社区与智慧城市的关系_智能家居有哪些物联网技术可让智能家居应用变得更方便。过去几年年可说是智能家居生态链成形的关键年,许多科技大厂如Google并购Nest/Dropcam、三星并购SmartThings等,或是合作建立物联网联盟,如Qualcomm建立Allseen、Intel及三星主导OIC等,积极建立智能家居管理平台,提供有意进军智能家居的业者API,整合第三方软硬件资源,…

    2022年10月17日
    4
  • 对话生成的新探索——从模仿学习到逆强化学习

    对话生成的新探索——从模仿学习到逆强化学习论文解读:DialogueGeneration:FromImitationLearningtoInverseReinforcementLearning  对话生成是一个常见的自然语言处理任务,其在工业界广泛应用与智能客服,闲聊机器人等。现如今主要研究于如何提高对话的质量,多样性。本文则采用先进的技术试图解决这个问题。一、简要信息序号属性值1模型名称DG-AIRL2所属领域自然语言处理3研究内容对话生成4核心内容DialogueG

    2022年9月18日
    2
  • JAVA设计模式之代理模式

    【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编

    2022年3月11日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号