![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
首先看看开发板配置: 板上采用的是LQFP144封装的STM32F429ZIT6型号MCU。有3个用户LED,1个用户按钮和1个复位按钮。再就是具有Micro-USB接口和以太网RJ45接口。 开发板还通过三种连接端口提供应用扩展功能。除现有的板上的Arduino™Uno和ST morpho连接器外,还包括一个ST zio连接器。这三类连接器让开发人员能够使用STM32微控制器的全部通用I/O引脚,轻松实现任何具有创造性的功能。 看到板上有个RJ45的以太网接口,想着还没有试过用用ST的以太网功能。本次就来简单体验一下以太网外设功能用法,试一试LWIP网络协议栈。 下面打开STM32CubeMX,通过用开发板方式新建工程。 选择我们对应的开发板,然后开始项目。开始之后,就进入项目配置了。通过开发板方式创建新项目的好处就是已经分配好开发板的默认引脚了。 接着选择ETH外设配置: 这里配置挺简单的,模式选择RMII模式。下面都是默认的配置。开发板板载的 PHY 芯片型号为 LAN8720A,该芯片只支持 RMII 接口。 这里说一下RMII。RMII 接口是 MII 接口的简化版本,MII 需要 16 根通信线,RMII 只需 7 根通信,在功能上是相同的。
板上LAN8720A电路部分如下: 下面接着设置LWIP协议栈参数,这里参数比较多。但是大多数只需要默认配置即可。 这里暂时没有使用RTOS系统。 这里选择板上对应的PHY驱动IC。 其他的LWIP配置先保持默认即可。 下面是系统时钟配置,使用默认的168MHz。 接着是生成的代码工程配置。 生成的KEIL工程如下: 初始生成的工程是使用AC5编译器的,我这个KEIL版本已经没有AC5了,这里我就修改为AC6编译器。编译优化也修改了。 初始编译会有错误。主要是没有sys/time.h头文件。 我先去掉这个头文件,再编译一下,发现还有如下错误。是有函数未实现找不到。 接着我搜索了一下这些函数。发现在lwip.c中有简易实现这些函数,但是编译没有包含进去。主要是宏定义__CC_ARM不识别。这个宏定义是AC5的。既然这样,我就先去掉这个宏定义判断,加上下面函数定义。 再编译一次就可以成功无错误了。接着下载到开发板上试一试。 主main中循环要加上如下代码函数:MX_LWIP_Process(); 要不然啥反应都没有。 添加打印IP地址函数。
下面可以看到串口打印数据。插上网线就可以看到 link up,然后打印IP地址。拔掉网线就会打印link down. |
TouchGFX应用移植自定义屏幕
STM32固件库分享,超全系列整理
【经验分享】新建基于STM32F40x 固件库的MDK5 工程
年终中奖---F429板卡网络应用
【NUCLEO STM32F429ZI开发板】之点灯大师
OpenBLT移植到STM32F405开发板
串口通信波特率异常的解决办法
《RT-Thread设备驱动开发指南》书籍学习记录
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)
分享STM32F407的学习资料 附学习笔记