STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx

上传人:b****6 文档编号:8658332 上传时间:2023-05-12 格式:DOCX 页数:11 大小:672.65KB
下载 相关 举报
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第1页
第1页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第2页
第2页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第3页
第3页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第4页
第4页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第5页
第5页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第6页
第6页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第7页
第7页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第8页
第8页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第9页
第9页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第10页
第10页 / 共11页
STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx

《STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx(11页珍藏版)》请在冰点文库上搜索。

STM32F407DP83848Lwip移植方法要点Word文档下载推荐.docx

2、将stsw-stm32070.zip解压得到STM32F4x7_ETH_LwIP_V1.1.0文件夹,下面是STM32F4x7_ETH_LwIP_V1.1.0文件夹架构

3、删除_htmresc文件夹,这个文件夹是ST及CMSIS公司logo,没什么用。

4、打开project文件夹,这个文件夹包括两个文件夹:

FreeRTOS和Standalone。

FreeRTOS文件夹里的程序示例是基于FreeRTOS系统的LWIP移植示例,这里我们不需要,直接删除。

Standalone文件夹里是一些无操作系统LWIP移植示例程序,在这里我们工程需要的是普通的数据传输,所以只使用到UDP,所以我们只保留udp_echo_client文件夹,其他的都删除掉。

在udp_echo_client文件夹中EWARM文件夹是IAREWARM建立的工程,MDK-ARM是keilMDK建立的工程。

在这里我们选择MDK工程,IAR建立的工程可以保留也可以删除。

还有一个文件夹RIDE,打开看了看,应该是用另一款编译软件建立的工程空间,这里我们不需要,直接删除。

5、Utilities->

Third_Party文件夹下面有三个文件夹FatFs_vR0、FreeRTOSV7.3、lwip-1.4.1。

FatFs_vR0一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统,FreeRTOSV7.3一个迷你操作系统内核的小型嵌入式系统,在这里我们都用不上,直接删除。

lwip-1.4.1文件夹是LWIP源码,是我们所需要的。

6、打开MDK-ARM文件夹里面的MDK工程

,我们先编译一下,可以看到有0个错误,三个警告,其中两个警告是定义了变量但是没有使用,我们不去管它,另一个警告是..\..\..\..\Utilities\Third_Party\lwip-1.4.1\port\STM32F4x7\Standalone

\ethernetif.c(366):

warning:

#1-D:

lastlineoffileendswithoutanewline提示ethernetif.c文件的最后一行(也就是366行)没有换行,MDK里面每个文件的最后一行必须换行,不然会提示一个警告,这里把366行后面换行再编译,这个警告就消失了。

7、打开main.h文件,因为我们电路板上使用的是RMII接口,所以将#defineMII_MOD注释掉,将//#defineRMII_MODE取消注释,如下图所示:

在这里要注意RMII的时钟为50MHz,在电路板上直接焊接一个50MHz的有源晶振就可以了。

取消//#defineUSE_DHCP的注释,启用动态地址分配,当地址分配不成功则使用静态IP地址。

如图:

注释掉或删除USE_LCD和serial_debug,本项目没有用到这两项,如下图:

本项目中直接删除掉,因为删除掉了SERIAL_DEBUG,所以我们可以将serial_debug.c文件从项目中移除。

点击红色的叉号删除serial_debug.c,然后点击OK就可以了。

将Groups栏STM324xG_EVAL中的stm324x7i_eval.c和stm324x7i_eval_lcd.c删除,将MDK_ARM中的启动文件startup_stm32f427x.s删除,将ProjectTargets分栏中的项目名STM324x7I_EVAL删除,将STM324xG_EVAL中的stm324xg_eval_lcd.c删除,这都是和本项目无关的东西。

这时候编译会提示错误,我们将stm32f4x7_eth_bsp.h文件里关于包含LCD函数的头文件删除,如下图。

将stm32f4x7_eth_bsp.c文件里面关于LCD的部分删除掉,如下图,将这些行删除。

将netconf.c中141-148行关于LCD的函数删掉

/*SettheLCDTextColor*/

LCD_SetTextColor(Red);

/*DisplaymessageontheLCD*/

LCD_DisplayStringLine(Line5,(uint8_t*)"

NetworkCableis"

);

LCD_DisplayStringLine(Line6,(uint8_t*)"

notconnected"

LCD_SetTextColor(White);

再编译就没有问题了。

8、按电路图修改时钟,修改stm32f4xx.h中宏定义标识符HSE_VALUE的值为我们的外部时钟20MHz

设置主PLL时钟,在System_stm32f4xx.c文件开头的地方配置

所以我们的主PLL时钟为:

PLL=20MHz*N/(M*P)=20MHz*336/(20*2)=168MHz

SystemInit()函数中设置的系统时钟大小:

SYSCLK(系统时钟)=168MHz

AHB总线时钟(HCLK=SYSCLK)=168MHz

APB1总线时钟(PCLK1=SYSCLK/4)=42MHz

APB2总线时钟(PCLK2=SYSCLK/2)=84MHz

PLL主时钟=168MHz

9、这个例程默认的是STM324xG_EVAL开发板,它使用的主芯片是STM32F407IG,而我们项目所使用的主芯片是STM32F407VE,要更改芯片配置。

点击

弹出如下窗口

选择Device将下面的主芯片改为

10、下面我们进入main.c函数看一下程序:

首先的注释是说明系统时钟已经配置完成,如果修改的话可以参考第8条。

接下来就是配置中断优先级分组NVIC_PriorityGroupConfig,这个很重要,只要定义了中断,就必须配置中断优先级分组,这个函数在系统中只能被调用一次,一旦分组确定就最好不要更改。

这里分配的是组4,4位抢占优先级,0位响应优先级。

接下来的是条件编译和LCD初始化,在前面我们已经删除SERIAL_DEBUG串口调试和LCD头文件,这里我们直接将这段程序删除。

如下图,将这几行代码删除掉。

删除mian.c下面关于LCD的信息:

删除128行以后的所有数据。

打开stm324xg_eval.h,注释掉第39行#include"

stm32_eval_legacy.h"

,这个头文件是关于开发板上LCD及按键的声明,本项目中没有用到LCD和按键。

打开stm32f4x7_eth_bsp.c文件,删除关于LCD的一些程序,删除447行至472行的程序和485行到495行的程序,这里的程序是在LCD屏上显示一些语句及本机的IP。

删除如下图所示程序。

打开netconf.c文件,删除关于LCD的程序,删除第219至223行程序,删除239至255行程序,删除274至290行程序。

这是关于LCD显示分配动态IP的信息的程序。

11、下面是stm32f4x7_eth_bsp.c;

配置以太网(GPIOs,clocks,MAC,DMA),对于GPIO的配置,我们选用的是RMII接口,而且芯片是STM32F407VE,和STM324xG_EVAL开发板上有些引脚定义有些差别,所以我们要对网口的GPIO接口修改:

修改结果如上图所示,注意以太网配置那段注释里面,双斜线的是我们RMII没有用到的引脚,还有就是要将PG11/PG13/PG14修改为PB11/PB12/PB13。

12、接下来就是修改关于LED和按键的程序了,删除netconf.c里面第179行、第234行和252行,有些行数可能不对,但代码不会变,找到相应代码并修改

将stm324xg_eval.c文件除了#include"

stm324xg_eval.h"

其他全部删除,如图所示

将stm324xg_eval.h文件除了下图所示程序其他全部删除:

我们项目电路板上所用到的功能就可以在这两个文件夹定义和声明了。

13、在官方UDP客户端这个例程中是利用按键中断来发送数据包的,本人开发的项目是当收到下位机的数据后就将数据转发给PC,所以在这里用不到按键中断。

之前我们删除了LCD_LED_BUTTON_Init();

这个函数,这个函数就是配置LED、LCD以及按键初始化及按键中断的函数。

所以在这里这个按键中断已经没有作用了,我们可以将UDP客户端发送数据包的函数直接复制到主函数中,然后将按键中断函数清空。

按键中断函数在stm32f4xx_it.c函数中,如下图,将udp_echoclient_connect();

复制到主函数中以便使用,等我们改写主函数时会用到这个函数。

这个函数是基于EVAL开发板写的一个数据收发函数,我们自己实现收发功能都可以参照这个函数来写,复制完之后直接将这个中断函数内容清空就可以了。

在main.c中还要添加udp_echoclient_connect()函数所在文件对应的头文件#include"

udp_echoclient.h"

14、至此,编译下载,修改电脑IP,连接我们的板子,因为是板子和电脑直接连接而不使用路由器,所以DHCP不会成功,会使用我们分配的静态IP,在main.h里面。

这时候应该就可以ping通了,说明LWIP已经运行在我们的板子上了,之后我们就可以参照udp_echoclient_connect()实现我们想要的功能,具体的大家就可以自己去分析了……

关于LWIP的接口函数使用,大家可以参考周立功的<

<

LWIP接口与编程指南>

>

对一般应用足够了,在XX文库上有免费下载

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2