STMCU小助手
发布时间:2022-4-19 23:00
|
01、IAR工程移植 首先是IAR工程的移植操作。" S7 {. A! E G+ ]- C 添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。
把以太网驱动库添加进工程+ F/ u$ V. z* ]: ^ 3 z1 f( @$ `& K- k* b5 ]" E
# c( v( M0 b1 _9 m) k 增加新库的头文件路径 @! S- _# B z L2 Z- {
将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。9 x# h1 B: U- _, P + N) ~# X- L4 g1 z' j/ a
我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h 1 \( i. Z6 z2 [2 B! @- z$ R8 C8 M! K
修改文件名称 4 K; [& I0 G. N I5 q' N
当然新加的头文件,要添加新的头文件路径。) j) V; c9 I) e9 U/ U T* c - A' L. ]+ A* j9 e8 S/ o
; o5 I% n3 O ]. Q* a' Q7 C 注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。 , T" R9 ~8 q# I! b
1 H% _) z! c1 i9 D# r4 {) h6 v$ s 添加以太网RTL8201EL的驱动程序 1 P* G7 E1 F" w; } 我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。! ~( B' w* o& G1 Q! U6 _
放入对应的位置
/ W) C% H: N; L% b5 _ 然后把BSP硬件驱动添加进入工程7 Y# q4 @( f, b3 }# k* F. v 0 r5 Z' R. F# d; @" M+ m# A! K7 V6 G
* J1 |* A6 ]/ |5 g# _2 s7 g, T; P7 ] 添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口
( m. U6 O0 {# a* e1 J; x: h; q 添加API相关文件 }: y% _0 W# q, K, O ' U( a3 g1 ^+ m9 l& }) b' F- g
! o4 y+ c1 Q) J2 U- H 添加Netif相关文件 ! @! Y3 O* D1 ~3 n
6 N- `2 _& O5 }/ y 添加IPV4相关文件* @+ A0 V' m/ x! a- I 6 w$ _- ^3 a% h
/ N; r' m+ u. S+ R! ] 当然,还要添加头文件路径,这是必不可少的; _, U( l2 h8 @: d1 H- U5 `; d 5 X; f$ v7 n0 N; K
* }- R3 E: W. T7 b+ C7 s. R; M2 ` 添加中间文件- M" l0 n: U6 d0 {/ q" l% Q; K
添加lwipopts.h }& l3 }9 G; l; J4 ?6 ] * b! V: L' B% I7 ~( y. j
编译出错1 R; ]% \: y1 U, r- p
这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉 0 O% z j$ W& |6 g
+ R2 j& P) A6 a: K 再编译,出新的错误,再次屏蔽这些现实部分的代码。! |1 @- D7 O/ ~! B: ]. @
修改之后,编译没有问题
( z8 ]. l! N! |1 L: X a5 d$ } 复制驱动,直接使用官方demo的文件, , b3 F2 b2 w1 g
拷贝ethernetif.c文件5 A; T. y/ \6 e9 \/ U2 Y a 9 \, P# U: c- y# A$ \0 J8 v+ O/ @
; G* E' M1 t6 S m, n3 D0 o! f 拷贝lwipopts.h文件。 - _+ |( @: I& G# u$ a
5 R8 \ D! c' H& r& C 把原来的文件删除掉
3 j# s' x6 d$ k9 u r1 V" a6 ? 重新添加我们新添加的文件(注意解除只读属性) & i; d% a* \$ F ~0 u- Z 修改文件. \/ m1 ^; m" M( v # V* t9 S3 \5 C) q# m
, }; I8 g& f1 d" Z _- g: i$ ~5 T4 r 新建lwip_app.c和lwip_app.h文件 , a+ T8 x; k+ C- G
Z8 q. Q/ _6 T, |6 @% Q 添加LwIP_Init函数接口。% J9 G6 d$ j- v0 p% X5 U % H4 m% o6 N2 I0 m8 Q- J" o9 g n
) k, R) n" X2 G0 i 增加LwIP_Pkt_Handle函数。, k7 N+ P3 ?; Z: T
定义一下宏: o( X: Y0 s7 S( T& {$ s
1 q% q/ X. e! r2 b 包头文件包含一下& f1 Q8 |. N7 v8 L
修改函数 " |: V% D% ~" F3 [
u4 B* R7 U _4 x2 Q; @& c 修改主函数 # u4 W; K1 z& n# B; x* F$ o8 _
使用PC端ping一下开发板的IP+ S' D, Y* S7 i
( {; q( }8 O8 F! A- _ 移植成功,可以正常响应ping。 8 A @! d: l) e' u9 w 这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。 02、修改Keil工程 添加文件,这些基本和IAR一样。 9 I* q0 h& v' C7 g
9 {" H8 K6 K# u1 \ 添加头文件路径( D, [2 t+ @. L% _ 5 D& u7 h+ L$ H& m B) M) p
编译代码,有1个错误" Y8 K& t5 |8 v' v
在timers.c添加 ' c* F. }( J* U" F1 P3 I7 j6 }6 C9 @! P
代码如下; D/ O' r( [7 e" c' S: @
编译下载,发现ping会死机- u, o) M3 Q0 k" J 修改代码优化等级就好了* \# X0 g9 T# u% Y
# g* g3 E( A) g 测试成功
总结:这是一篇流水账的移植记录,深入了解LWIP网络开发,还是要动手自己移植,多多研究源码。( y& d1 c9 d! K; T, X% M4 t : Q: O7 D- I' G( K% M " ^0 [( n. ~# G |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版