启明欣欣STM32开发板 --- 运行LWIP (无RTOS)
创始人
2025-05-30 22:50:49

最近体验了一下CubeMX,发现真的是非常好用,里面使用了ST自家的HAL库,这应该是ST的策略,为了绑定客户…

本文讲述使用CubeMX生成LWIP的Keil工程并在启明欣欣板子上运行,不使用RTOS,同时会提到其中的一些坑和解决办法。

文章目录

    • 一 环境搭建
    • 二 使用CubeMX进行配置
      • 1. 配置SYS
      • 2. 配置RCC
      • 3. 设置ETH
      • 4. 设置LWIP
        • a. 设置Platform
        • b. 设置General Settings
      • 5. 设置时钟
      • 6. 配置工程
      • 7. 生成工程
    • 三 使用Keil工程
    • 四 小结


一 环境搭建

去ST官网下载CUBEMX,这个软件使用java运行环境,运行的时候很耗内存,我这里显示需要1个G的内存…

本人环境如下:

  • OS: Win10
  • CubeMX: 6.7.0
  • Keil: 5.35.0
  • CM4芯片:STM32F407ZGT6, 内存192KB,flash是1MB,频率最高168M Hz
  • 网卡芯片:DP83848
  • 下载器:ST-Link V2

二 使用CubeMX进行配置

打开CubeMX,在New Project下选择“从芯片开始”,点击“ACCESS TO MCU SELECTOR”,
在这里插入图片描述
中间会自动下载一些包,下载完成后会弹出新界面,然后在左上的搜索框里输入STM32F407ZGT6,
在这里插入图片描述
此时在中间的地方显示出芯片选项,
在这里插入图片描述

这点单击第一个,
在这里插入图片描述
然后点击右上角的Start Project来开始工程
在这里插入图片描述

1. 配置SYS

在工程界面里,首先修改SYS,位于System Core下,如下图,
在这里插入图片描述
Debug选择Serial Wire,因为调试器用的ST-LINK;Timebase Source选择TIM1,无rtos的时候也可以选择systick,其它定时器也可以

2. 配置RCC

点击RCC,在右侧的HSE里选择外部晶振,板子上的外部晶振是8M Hz
在这里插入图片描述

3. 设置ETH

在Connectivity下选择ETH,然后右侧Mode里选择RMII,因为板子就是按照RMII和网卡芯片进行连接的,
在这里插入图片描述
在Configuration栏里,点击Parameter Settings,里面的Rx Mode选择Polling Mode,默认配置也是这样
在这里插入图片描述
接着点击Advanced Parameters,选择DP83848_PHY_ADDRESS,因为网卡芯片是DP83848,
在这里插入图片描述
最后点击GPIO Settings,默认的IO选择中有三个是和板子不一样的,
在这里插入图片描述
板子上电路图如下,
在这里插入图片描述
可以看出ETH_TX_EN应该改为PG11,ETH_TXD0改为PG13,ETH_TXD1改为PG14

在最右侧的Pinout View里单机PG11,然后选择ETH_TX_EN
在这里插入图片描述
同理修改PG13和PG14,
在这里插入图片描述
选择完毕后可以直接把默认的配置覆盖掉。

改之后变成如下,
在这里插入图片描述

4. 设置LWIP

在Middleware里选择LWIP,
在这里插入图片描述
然后在右侧勾选Enabled,
在这里插入图片描述

a. 设置Platform

在Configuration栏里,点击Platform Settings,然后2个选择框里都选择DP83848,
在这里插入图片描述

b. 设置General Settings

点击General Settings,然后修改设置如下,
在这里插入图片描述
也就是关闭DHCP,因为本文使用网线直连,不使用路由器,如果使用路由器那么可以使用DHCP。关闭DHCP后,就需要手动设置其IP地址,修改为192.168.1.240

电脑这边,可以使用网线直接接在电脑的网口,然后修改电脑网卡的ip地址。本人感觉这样比较麻烦,而且有的电脑已经没有网口了,于是本人买了一个usb转网口的转换器,然后把转换器接到电脑上,最后设置转换器的的IP地址就可以了,
在这里插入图片描述
修改后地址如下,于是本机IP是192.168.1.68
在这里插入图片描述

5. 设置时钟

板子上的CM4芯片最高频率是168M Hz,点击Clock Configuration,左侧输入评率输入8,即外部晶振的频率,
在这里插入图片描述
HCLK里输入168,然后回车让软件自动配置,这样时钟就配置好了。

6. 配置工程

点击Project Manager,点击左侧的Project,然后修改如下,
在这里插入图片描述
堆栈大小都设置为16KB

点击Code Generator,根据需要进行选择,本人选择如下,这样会让工程变的独立,但是工程大小会变大
在这里插入图片描述

7. 生成工程

最后点击右上角的GENERATE CODE生成Keil 工程
在这里插入图片描述


三 使用Keil工程

生成的工程如下,打开MDK-ARM目录,
在这里插入图片描述
如下,然后打开工程,
在这里插入图片描述
打开后点击配置按钮进行配置,如下是Target栏,勾选Use MicroLIB,因为LWIP源码里会使用printf,如果不想使用MicroLIB,就需要自己添加文件让程序支持printf,这个网上可以搜一下。
在这里插入图片描述
然后点击Output,取消勾选Browse Information,这个可以大幅提高编译时间,只是在keil里无法查看函数定义,不过本人是使用VSCode来查看代码,就不需要这个Browse Information了。
在这里插入图片描述
最后打开main.c,在里面的while循环里添加MX_LWIP_Process(),如下,
在这里插入图片描述
这行代码是使用polling mode来处理网络报文。

最后编译并把程序下载到CM4里。

先用网线把板子和电脑连接在一起(根据介绍,网线要提前接上),下载完毕后按一下复位键,等待~3s后,使用ping进行测试,
在这里插入图片描述
成功!

小问题:在测试中发现这个板子有个问题,如果是断电重启,ping就会失效,但是上电后按一下复位键,ping就可以成功。电路图上显示,网卡芯片的复位脚和CM4的复位脚是连接在一起的,不知道是不是这个原因造成的。


四 小结

本文讲述如何使用CubeMX生成运行LWIP的Keil工程,并测试OK,顺道讲述了一些坑和对应办法。

相关内容

热门资讯

玩家实测“新皇豪拼十透视挂辅助... 您好:新皇豪拼十这款游戏可以开挂,确实是有挂的,需要软件加微信【6355786】,很多玩家在新皇豪拼...
今日资讯.新版九哥可以开挂吗.... 亲.新版九哥这款游戏是可以开挂的,确实是有挂的,通过添加客服【9183893】很多玩家在这款游戏中怀...
重大通报“皇豪互娱斗牛到底有没... 您好:皇豪互娱斗牛这款游戏可以开挂,确实是有挂的,需要软件加微信【5951795】,很多玩家在皇豪互...
常识!“陕北打锅子可以透视吗”... 您好:陕北打锅子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【3398215】很多玩家在这款游...
重大通报“牌乐门可以开挂吗”(... 您好:牌乐门这款游戏可以开挂,确实是有挂的,需要软件加微信【69174242】,很多玩家在牌乐门这款...