
01、IAR工程移植7 m9 {1 ]( T B3 Q9 H6 | 首先是IAR工程的移植操作。 添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。 " E1 f$ a' Q2 O# p$ U% I ![]() ; ]( `, D/ V- a0 { 把以太网驱动库添加进工程0 E2 R- c9 d% m9 B2 {$ i9 B1 Q " }$ f$ `3 Z3 `$ |6 w9 [, g4 P ![]() 增加新库的头文件路径 & [- _- E, q6 [, s ![]() 将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。 ![]() 我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h' U, l5 l) }2 d ~ ![]() & O4 J3 C1 c2 m( H+ a 修改文件名称2 h4 T* o# P" e1 P4 `' [, O5 J " t/ _9 C! U# y9 c4 C ![]() 当然新加的头文件,要添加新的头文件路径。 ![]() 注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。 D1 i, a4 z& Q( c. n : F' p4 X! r; _5 k ![]() 添加以太网RTL8201EL的驱动程序) K0 ?0 J! ~8 r( { . [2 o5 j& q# Q0 G6 ]/ x 我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。7 d+ x* Q: g# Z, V; V, j' ~" w/ U, C1 Q ![]() 放入对应的位置 + ^- W% G& ?* R/ D, I0 j2 A ![]() a+ z2 a P# h {, C 然后把BSP硬件驱动添加进入工程 ![]() 添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口 ![]() " u) Z& e$ t0 E, \+ Z% @9 z 添加API相关文件 ![]() ! S; v3 S5 }/ T 添加Netif相关文件 ![]() * G9 Z7 w3 v3 b6 S/ A4 m* g 添加IPV4相关文件& ~9 ]0 K. P1 y8 [/ [7 s 6 \" w4 x2 i4 P5 O8 _ ![]() 当然,还要添加头文件路径,这是必不可少的) _3 g5 u& b' ~: ` ![]() ! w% n/ P, E9 P0 {( W2 W 添加中间文件7 s3 R: h" J! [" _- u+ R 3 K; w! X9 ?- ^) D0 S ![]() 5 W! z" ]+ ]( S; E }6 f* _ 添加lwipopts.h ![]() 3 i9 x4 G) \$ c1 W" b 编译出错 6 j- f X$ i: p3 f% N ![]() 这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉 % L% s: k, q3 e) u ![]() 再编译,出新的错误,再次屏蔽这些现实部分的代码。6 C( F8 g" R( X 6 G- r0 x$ I% M5 ?" W* ~ ![]() 修改之后,编译没有问题& z0 e; Z+ _7 d. J1 q# B/ G7 M % ?1 i$ s0 `: a& o q" _ ![]() * b) P$ o% ?- Y0 n% z4 b1 `& C4 W 复制驱动,直接使用官方demo的文件,3 x* R9 B1 u8 k5 I" d ![]() 拷贝ethernetif.c文件 o6 q+ \ v# B7 m, H- `) y ![]() 拷贝lwipopts.h文件。6 Z% V* Z/ M3 j- H* d% i ![]() 把原来的文件删除掉8 W- A& o. ]: ]8 n" x0 F6 o e 6 A J" `' k0 X# B- M6 S ![]() 重新添加我们新添加的文件(注意解除只读属性). f, @6 O( i+ g) Z- f8 T3 u 修改文件 {# B4 X8 E5 q7 g. @3 M ![]() 8 Y# ?- k V5 Z 新建lwip_app.c和lwip_app.h文件 ![]() 添加LwIP_Init函数接口。 / G+ Q. U" A4 d" d' T9 h" ~ O* i ![]() 增加LwIP_Pkt_Handle函数。4 H- |& f3 Z/ U* ?5 ^8 N% i ![]() W; n- K3 q* i/ X3 ?4 h 定义一下宏 ![]() 0 H A& m. D/ h" K3 g 包头文件包含一下7 M7 @ c; [$ {" ^, @2 V) [2 T & q1 U6 ~5 w/ i8 O6 H- l ![]() |: t1 a" y3 u6 m4 } 修改函数8 _! k% \( Q& T/ z" r ( Q4 @) [0 ]8 i2 a6 F# t. @4 \ ![]() / _- m8 V2 _; H8 x g* I 修改主函数 ![]() 使用PC端ping一下开发板的IP 3 ?# k% P; J5 C; S ![]() 移植成功,可以正常响应ping。 , }: E3 \& O9 G( U3 s% _ 这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。 V k5 F; L5 W i, O* R 02、修改Keil工程 添加文件,这些基本和IAR一样。 ![]() 添加头文件路径% i4 r/ L' L H+ P& }# ] G J( Y* f) H7 y ![]() 编译代码,有1个错误 ![]() 在timers.c添加 / k$ Q: e/ T: K0 O& t( o/ G ![]() & ]8 A* U: g- j9 k Y1 j" Z/ p* T 代码如下 6 W& T4 u) l- } t' |5 ?: P7 j
编译下载,发现ping会死机% {- C& G/ ~# u6 B7 P 修改代码优化等级就好了0 F2 E) r1 `8 r - o' N' n4 |- P( u4 f6 Z ![]() & v1 k9 x" K8 U: V 测试成功$ \* D9 o R- L% C/ `3 `! I+ @ ![]() 6 F" O3 D) {3 H& I 总结:这是一篇流水账的移植记录,深入了解LWIP网络开发,还是要动手自己移植,多多研究源码。 - [9 i. Z% ^4 f9 X1 | |
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化