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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python的安装包安装教程_如何安装python

    python的安装包安装教程_如何安装pythonpip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。一般情况pip对应的是Python2.7,pip3对应的是Python3.x。部分Linux发行版可直接用包管理器安装pip,如Debian和Ubuntu:sudoapt-getinstallpython-pip安装包pipinstallSomePackage…

    2025年6月21日
    4
  • VS2010 旗舰版序列号

    VS2010 旗舰版序列号YCFHQ-9DWCY-DKV88-T2TMH-G7BHP转载于:https://www.cnblogs.com/canyuexingchen/p/3229530.html

    2022年7月20日
    15
  • 2020vue面试题及答案_人际关系面试题及答案

    2020vue面试题及答案_人际关系面试题及答案1、虚拟DOM中key的作用:key是虚拟DOM对象的标识,当状态中的数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,随后Vue进行【新虚拟DOM】的差异比较,比较规则如下:2、key的对比规则:1、旧虚拟DOM中找到了与新虚拟DOM相同的key:若虚拟DOM中内容没变,直接使用之前的真实DOM若虚拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM………

    2025年8月31日
    6
  • Oracle Number 自动转Decimal问题修正「建议收藏」

    Oracle Number 自动转Decimal问题修正「建议收藏」spark加载Oracle表的Number字段,直接写入关系表会被转成decimal双精度类型解决方式:1.构建Jdbc会话publicclassJdbcOracleDialectextendsJdbcDialect{@OverridepublicbooleancanHandle(Stringurl){returnurl.startsWith(“jdbc:oracle”);}@Overrid…

    2022年7月24日
    33
  • LoadRunner11安装激活成功教程与汉化

    LoadRunner11安装激活成功教程与汉化1.安装LoadRunner的基本环境1、LoadRunner版本:LoadRunner112、电脑环境:Windows7+ie8注意:如果系统浏览器版本高于ie8,请降回ie8以下后再做LoadRunner安装。安装之前请将各种杀毒软件退出。2.安装资源1、资源:loadrunner11下载链接:https://去pan.baidu.com掉/s/1l_1k7中O8文by…

    2022年7月22日
    19
  • 彩色图和深度图转点云

    彩色图和深度图转点云环境:windows10、VS2013、opencv2.49、openNi、PCL1.8opencv环境搭建参考https://www.cnblogs.com/cuteshongshong/p/4057193.htmlhttps://blog.csdn.net/u013105549/article/details/50493069PCL1.8+openNi搭建参考https://blog.cs…

    2022年4月25日
    38

发表回复

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

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