在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。 有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。 我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。 IAR工程移植 首先是IAR工程的移植操作。/ t- d$ j7 f" j# A; O 添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。6 C/ q v* p* S8 m6 V3 d% y 把以太网驱动库添加进工程7 j- K5 S6 N2 G" s+ A% \ 增加新库的头文件路径 - ^& Y- q' y% }0 k 将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。 我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h% q' s$ f1 m" i7 B 修改文件名称 + m0 v, f& A/ v3 q2 _- r 当然新加的头文件,要添加新的头文件路径。 注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。 + _, }* |/ v% v4 Q 添加以太网RTL8201EL的驱动程序 我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。8 I; E- f9 }. d9 A8 H * X: p. e9 f) G/ {8 C 放入对应的位置 ! |8 f, M1 z- M# A1 N) V 然后把BSP硬件驱动添加进入工程) d! N% j% X1 ~ ! D* f$ W) Y, u 添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口& W3 c& _2 {2 D8 ]7 z' t 添加API相关文件 E& V- U1 x( y% _6 Z 添加Netif相关文件* x( ~* d1 ?3 d2 m# d2 I 添加IPV4相关文件 当然,还要添加头文件路径,这是必不可少的 9 a4 R* u1 n( Y8 }4 N 添加中间文件0 j3 E$ X% x; g; `) I' T! ] 添加lwipopts.h( B" Z1 S6 U1 d: z5 ~, d4 d 编译出错 这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉 0 x) E7 X7 x9 k1 w 再编译,出新的错误,再次屏蔽这些现实部分的代码。( O) P/ u! c1 w$ T * w' G' P$ \$ L" A1 [* U8 Z; Z 修改之后,编译没有问题 1 V4 u; O( b! t: N 复制驱动,直接使用官方demo的文件,/ A9 y/ g4 G% Q D/ W _8 E2 b0 A 5 P% k* |+ P2 w: B1 Y 拷贝ethernetif.c文件 ( r$ X! h+ k6 Z- L4 _ 拷贝lwipopts.h文件。; @+ Z3 K2 g. m+ V 把原来的文件删除掉, `* R" D$ n- a# S' W 重新添加我们新添加的文件(注意解除只读属性) 修改文件8 s. Y1 ^) ]9 ] n1 T+ I \ ' C# m) \/ q. | ~. G 新建lwip_app.c和lwip_app.h文件 添加LwIP_Init函数接口。 i' C% f6 A( f/ j 8 ]7 F3 y% E0 D* o 增加LwIP_Pkt_Handle函数。 定义一下宏3 q" J" X7 w* X5 {1 {% r# L$ b 包头文件包含一下 修改函数) X, r/ C3 F% c6 R' e* k U; v8 s% W# k* ]$ h+ f 修改主函数 使用PC端ping一下开发板的IP 移植成功,可以正常响应ping。 这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。 ; L8 r2 C. A$ _8 W |
stm32f207/stm32f407擦除内部flash讲解
【经验分享】STM32F2 中 DMA 的 FIFO 模式
STM32F2x7 通过以太网实现在应用中编程 (IAP)
STM32F2xx 微控制器中的 EEPROM 模拟
在 STM32 F0、 F2、 F3、 F4 和 L1 系列MCU 中使用硬件实时时钟 (RTC)
STM32F1xx、STM32F2xx、STM32F4xx、STM32L1xx、STM32F30/31/37/38x 定时器概览
使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度
使用 STM32F2 和 STM32F4 DMA 控制器
STM32F2x7 通过以太网实现在应用中编程 (IAP)
STM32F2xx 微控制器中的 EEPROM 模拟