如何利用权重进行排名STM32CubeMX进行STM32开发

【实战经验】从零开始使用 CubeMX 创建以太网工程 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 2778|回复: 14
【实战经验】从零开始使用 CubeMX 创建以太网工程
在线时间1328 小时
ST金币9942103
主题帖子好友
在前面一篇文章中,介绍了如何使用CubeMX来建立一个简单的TCPEchoserver工程。但是在新建CubeMX项目时,是通过直接选择ST的开发板的方式实现的。对于大多数实际的开发场景,可能并不是在ST的开发板上进行的,所以在这篇文章中,我将介绍如何从零开始建立一个以太网工程。
今年ST推出的Nucleo-144板子上集成了以太网接口,所以在本文中,将以STM32F746-Nucelo板为例,通过CubeMXv4.18来新建一个TCPEchoserver的程序。
用CubeMX建立基于STM32F746-Nucleo的工程
用CubeMX进行初始化配置
这回我们直接选择STM32F746-Nucleo板上对应的芯片STM32F746ZGT6U,而不是选择STM32F746-Nucleo板。
1. 新建一个Project,在向导中选择STM32F746ZGT6U。
31.jpg (49.52 KB, 下载次数: 0)
13:22 上传
这个时候我们看到的还是一个空的工程。如下图:
32.jpg (100.95 KB, 下载次数: 0)
13:22 上传
2.外设使能,引脚配置
2.1以太网外设引脚配置
Nucleo-144板上用的PHY LAN8742A,RMII接口。在Cubemx中使能ETH外设,选择RMII接口。Cubemx会自动配置对应的以太网接口。如下图:
33.jpg (102.78 KB, 下载次数: 0)
13:22 上传
STM32的很多引脚都有复用功能,同一个功能也可以remap到不同的引脚。所以这里要记得将CubeMX自动配置的引脚和实际电路中使用的引脚进行对比,保证是一致的。
从UM1974中可以找到Nucleo-144板上以太网引脚分配表。对比这张表格和CubeMX的默认配置,会发现PB11,PB12引脚在STM32F746-Nucleo板中没有用做以太网的接口,而是用作其他用途了。
STM32F746-Nucleo上的引脚分配:
34.jpg (144.62 KB, 下载次数: 0)
13:22 上传
CubeMX的默认分配:
35.jpg (92.49 KB, 下载次数: 1)
13:22 上传
在Cubemx中修改引脚配置:修改方法见下图,用同样的方法配置PG11和PG13。配置PG11和PG13后,对应PB11和PB12会自动清除之前的配置,以免冲突。
36.jpg (111.93 KB, 下载次数: 0)
13:22 上传
到现在位置,已经将所有的GPIO口都配置好了。
在Configuration页面中,还可以看到所有配置的GPIO。并可以做进一步的配置,这里就先用默认的设置。
37.jpg (276.81 KB, 下载次数: 0)
13:22 上传
2.2使能LwIP协议栈
在这个工程内,我们会用到LwIP协议栈,所以还需要在这一页的Middlewares部分将LWIP勾选上。之后就可以在Configuration页面对LWIP协议栈进行配置了。
38.jpg (45.64 KB, 下载次数: 0)
13:22 上传
3.时钟配置
接下来进行时钟配置。CubeMX默认系统时钟16MHz,但以太网外设需要至少25MHz的系统时钟,所以这里会看到Clock Configuration页面显示
38.1.jpg (731 Bytes, 下载次数: 0)
13:22 上传
打开Clock Configuration页面会自动跳出一个提示框,可以选择让CubeMX来帮你自动调整时钟配置,也可以自己手动进行调整。这里,我选择让CubeMX自动配置,CubeMX会自动将时钟配成216MHz。
39.jpg (106.22 KB, 下载次数: 0)
13:22 上传
4. 配置以太网参数
在Parameter Settings页面,可以配置MAC地址,PHY的地址,是否进行自动协商等。
这里,我们设置了MAC地址为本地地址02 :00 :0 :00 :00 :00。LAN8742a的PHY地址由上电时PHYAD0的状态决定。根据STM32F746-Nucleo板的原理图,设置PHY地址为0。
41.jpg (268.01 KB, 下载次数: 0)
13:23 上传
接收数据的模式有轮询和中断两种方式,中断方式需要和操作系统一起使用,这里我们没有使用任何操作系统,所以在RX Mode这一项只能选择Polling Mode。
最后一项是”TX IP Header Checksum Computation”,STM32的MAC控制器可以在发送数据时自动添加IP数据报的checksum,如果需要这项功能,就将这一项设置为“By hardware”
在Advanced Parameters页,可以根据所用的PHY修改寄存器的地址和一些MASK的设置。因为STM32F746的两款开发板上用的都是PHY LAN8742A,所以CubeMX中默认的配置是以LAN8742A为例进行设置的。所以这里,我们不需要做任何修改就可以直接用。但如果是其他的PHY,可以在PHY这一项选择“user PHY”,然后根据所用PHY的数据手册,配置下面的参数,对于部分无法通过CubeMX进行配置的参数,需要手动的修改代码。将有冲突的地方删除,或者添加某个功能。
Advanced Parameters页分为三个部分:
· External PHY Configuration 。复位延时,读/写超时的参数设置
· Common :External PHY Configuration。PHY的基础寄存器配置,这部分寄存器对于大部分PHY都是相同或类似的。
· Extended :External PHY Configuration。 PHY的扩展寄存器配置,这部分对于每个PHY都是不一样的。如果是使用非CubeMX默认的PHY,这部分内容需要特别注意。
42.jpg (84.09 KB, 下载次数: 0)
13:23 上传
4. 修改LWIP的参数
配置好以太网的参数后,点击OK,回到CubeMX的配置界面。选择LWIP继续进行参数配置。
43.jpg (19.3 KB, 下载次数: 0)
13:24 上传
首先是GeneralSettings页面,在这里我们可以看到LWIP的版本号。配置IP地址信息,可以选择通过DHCP的方式动态分配IP,也可以分配一个静态的IP地址。这里,我们选择配置静态的IP地址192.168.0.10,子网掩码255.255.255.0,网关192.168.0.1。ICMP协议打开,因为我们用的是TCP协议,所以把UDP协议关掉。
不用担心不知道每项参数是做什么用的,选择每一项参数后都会在窗口的底部显示该项参数的解释。
44.png (129.61 KB, 下载次数: 0)
13:27 上传
在Key Options这一页里,有更多的参数可以配置。关于接收/发送内存的配置也是在这里。选择右上方的“Show Advanced Parameters”后,还有更多的参数配置项。这里,我们也可以不做修改,使用默认值。CubeMX中每个参数项的名称和代码中的名称相同,这样也方便了在代码中进行查找。
45.jpg (139.28 KB, 下载次数: 0)
13:23 上传
到此为止,我们在CubeMX中需要做的配置就全部完成了。选择Project——&Generate Code,生成初始的工程。
46.jpg (54.71 KB, 下载次数: 0)
13:23 上传
添加用户代码
用IAR打开前面已经生成好的工程。我们还需要两步就可以完成一个简单的TCP EchoServer程序了。
1.新建tcp_echoserver.c文件,在tcp_echoserver.c里要做下面这几件事情:
1)新建一个tcp_echoserver_pcb(调用tcp_new函数);
2)将新建的tcp_echoserver_pcb与要监听的端口绑定(调用tcp_bind函数)
3)转成监听状态(调用tcp_listen函数)
4)注册回调函数tcp_echoserver_accept,当有新连接建立后会调用该函数(调用tcp_accept函数)
5)注册回调函数tcp_echoserver_recv,当该连接接收到数据后会调用该函数(调用tcp_recv函数)
6)完成tcp_echoserver_recv函数,在该函数内,将收到的数据再发出去。
需要注意,本文的目的是示例如何用CubeMX建立一个简单的TCP EchoServer程序,所以考虑的都是最基本简单的情况。比如,在回发数据部分,我们假设Client发来的数据都在一个Pbuf的大小以内。
完成tcp_echoserver.c后,将其加入到工程项目中。
47.png (54.59 KB, 下载次数: 7)
13:23 上传
2. 在main函数中添加tcp_echoserver_init(),在while(1)中添加MX_LWIP_Process()查询接收数据。记得要将代码加在/*USER CODE BEGIN*/和/*USER CODE END*/之间,这样才不会在下次用CubeMX生成代码时被覆盖掉。
48.jpg (23.91 KB, 下载次数: 0)
13:23 上传
一个简单的TCP Echoserver程序就完成了。
我们来看一看ping测试和TCP测试工具的结果
1. 通过电脑(192.168.0.11)ping STM32F746-Nucleo板(192.168.0.10)
49.jpg (25.17 KB, 下载次数: 0)
13:23 上传
2.通过TCP测试工具模拟客户端,向STM32F746-Nucleo板发一串数据。
50.jpg (39.76 KB, 下载次数: 0)
13:23 上传
测试结果说明我们刚刚建立的TCP EchoServer程序已经能正常工作了。
STM32CubeMX下载地址:STM8CubeMX下载地址:
在线时间39 小时
主题帖子好友
高级会员, 积分 693, 距离下一级还需 307 积分
高级会员, 积分 693, 距离下一级还需 307 积分
抱歉,问题解决掉了,按照您上面的步骤生成的代码是没有问题的,至于PHY的寄存器偏移值及MASK,在此次这样配置下是无所谓的,用默认值即可。这些寄存器的值是用于检测连接参数及连接状态的,此次没有用到这些功能。
之前的问题,是我没有配置PD3,这儿引脚为PHY的引脚复位,现在一切正常。谢谢
在线时间39 小时
主题帖子好友
高级会员, 积分 693, 距离下一级还需 307 积分
高级会员, 积分 693, 距离下一级还需 307 积分
您好楼主,根据您的这个帖子及近期的以太网培训,在学习以太网。用您上面的步骤发现在现在的cubemx版本V4.21.0中有一些配置页面不同,我用的是原子的F407的板子,PHY是LAN8720A,比对LAN8742A与LAN8720A两者的数据手册,发现寄存器是完全兼容的,按照上面的流程配置CUBEMX生成工程后,能得到IP地址,但是无法PING通。且CUBEMX 在PHY status register Offset 中有错误,数据手册上的寄存器偏移值为31,但是Cubemx给出的是0X10,且掩码也错误。
QQ截图26.png (69.45 KB, 下载次数: 0)
12:37 上传
而且 Rx mode&&只能选择 Polling mode&&不能选择中断,原子的例子里面是采用中断的。
想请问下我是什么地方没注意?或者最新Cubemx哪里需要配置?&&谢谢
在线时间166 小时
ST金币1812
主题帖子好友
金牌会员, 积分 2609, 距离下一级还需 2391 积分
金牌会员, 积分 2609, 距离下一级还需 2391 积分
谢谢分享& && && && && && && && && && && &
在线时间831 小时
ST金币3495
主题帖子好友
学习。。学习;;;
在线时间122 小时
主题帖子好友
cubeMX配置功能真的好强大
在线时间5 小时
主题帖子好友
初级会员, 积分 51, 距离下一级还需 149 积分
初级会员, 积分 51, 距离下一级还需 149 积分
不赖&&不赖
在线时间827 小时
ST金币1198
主题帖子好友
小破出品,必属精品!
在线时间191 小时
ST金币2222
主题帖子好友
金牌会员, 积分 3423, 距离下一级还需 1577 积分
金牌会员, 积分 3423, 距离下一级还需 1577 积分
我来学习lwip了
在线时间44 小时
ST金币1207
主题帖子好友
金牌会员, 积分 1541, 距离下一级还需 3459 积分
金牌会员, 积分 1541, 距离下一级还需 3459 积分
学习学习,谢谢版主!
在线时间168 小时
ST金币1946
主题帖子好友
金牌会员, 积分 3235, 距离下一级还需 1765 积分
金牌会员, 积分 3235, 距离下一级还需 1765 积分
破总,有LAN8742A手册的吗
在线时间1328 小时
ST金币9942103
主题帖子好友
破总,有LAN8742A手册的吗
是ST MCU吗&&怎么没听过
站长推荐 /2
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by21ic官方微信-->
后使用快捷导航没有帐号?
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
查看: 4235|回复: 15
关于STM32CubeMX的上手使用
&&已结帖(20)
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
本帖最后由 ludl 于
19:21 编辑
之前固件库里有个例程文件夹,里面有各个外设的使用例程,每个外设针对不同的用法又有不同的例程,上手起来比较方便
可以根据例程方便的找到各个初始化和应用的时候需要的函数入口。
用STM32CubeMX时,生成的程序模板比较规范整齐,但和库函数版本的不一样。
STM32CubeMX有自己的一套底层函数,通过操作各个寄存器来调用外设。
但程序模板只是完成了外设的初始化
发现cube版里面例程只有很少的几个,是基于几块官方开发板的,而且只是实现了外设的基本功能,让外设动起来而已
实际使用往往不知道初始化之后该怎么操作,也找不到对应的函数入口。
程序里面也用了很多的结构体,很多是几层结构体嵌套,看起来很累。
怎么样才能上手CubeMX?哪里能找到类似固件库里的丰富的例程?
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
我现在实际使用往往是用cubeMX生成初始化模板后,直接操作寄存器来设置和启动外设
感觉没有发挥cubeMX应有的功能
主题帖子积分
助理工程师, 积分 1053, 距离下一级还需 947 积分
助理工程师, 积分 1053, 距离下一级还需 947 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:10.00
主题帖子积分
助理工程师, 积分 1053, 距离下一级还需 947 积分
助理工程师, 积分 1053, 距离下一级还需 947 积分
看对应的.h文件,里面有相应的接口函数
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
:handshake:victory::P&&说得对:“程序里面也用了很多的结构体,很多是几层结构体嵌套,看起来很累。”
最 头疼 就是这种:【绕来绕去】的,很不便于 学习。。。
作为例子:就是要:‘一根直 肠子 走到底’、让人 一目了然。
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
我现在实际使用往往是用cubeMX生成初始化模板后,直接操作寄存器来设置和启动外设
感觉没有发挥cubeMX应有 ...
其实 也不错了,,去找 它的 HAL 库,也不知道 该函数
究竟 使用、影响了 哪些 寄存器,也没有 细节的 HAL库 手册 。
主题帖子积分
主题帖子积分
专家等级:结帖率:82%
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
看对应的.h文件,里面有相应的接口函数
看过,但还是一头雾水,因为参数是反复嵌套的结构体
看起来很是费力
主题帖子积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:38.00
主题帖子积分
这是一种发展趋势;
是很难看到底层代码的;
深圳游名智能科技有限公司
游名电子工程师群1:;
物联网技术交流群:;
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
助理工程师, 积分 1271, 距离下一级还需 729 积分
看过,但还是一头雾水,因为参数是反复嵌套的结构体
看起来很是费力
确实如此,CUBE之后 直接 寄存器操作,
其实 也是一种 很可靠的 做法。。
只要你的程序是独立的,不与别人
关联,就完全可以 寄存器搞定。
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
其他就没有更好的入门可以参考的资料了吗?
还是说这要等官方慢慢完善补充?
那有没有增加例程的计划?
毕竟按照官方的意见,cubeMX是趋势,就想少走点弯路,新项目想用这个了
主题帖子积分
初级工程师, 积分 2588, 距离下一级还需 412 积分
初级工程师, 积分 2588, 距离下一级还需 412 积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:2.00
主题帖子积分
初级工程师, 积分 2588, 距离下一级还需 412 积分
初级工程师, 积分 2588, 距离下一级还需 412 积分
没用过那个 效果怎么样啊
专注STM32嵌入式软件开发,承接STM32嵌入式软件开发,快捷效率安全可靠,联系方式QQ:
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
中级技术员, 积分 194, 距离下一级还需 106 积分
中级技术员, 积分 194, 距离下一级还需 106 积分
没用过那个 效果怎么样啊
生成的那部分的代码还是不错的
就是后面自己写的感觉远不如固件库的好上手
主题帖子积分
初级工程师, 积分 2131, 距离下一级还需 869 积分
初级工程师, 积分 2131, 距离下一级还需 869 积分
主题帖子积分
专家等级:结帖率:100%打赏:8.88受赏:28.88
主题帖子积分
初级工程师, 积分 2131, 距离下一级还需 869 积分
初级工程师, 积分 2131, 距离下一级还需 869 积分
怎么设置系统滴答时时钟?
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
最近刚用Cube,帮顶!!
主题帖子积分
中级技术员, 积分 174, 距离下一级还需 126 积分
中级技术员, 积分 174, 距离下一级还需 126 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:15.00
主题帖子积分
中级技术员, 积分 174, 距离下一级还需 126 积分
中级技术员, 积分 174, 距离下一级还需 126 积分
今天刚用,挺实挺不好用,弄个USART1中断接收都搞好久。。。
主题帖子积分
高级工程师, 积分 5664, 距离下一级还需 2336 积分
高级工程师, 积分 5664, 距离下一级还需 2336 积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:5.00
主题帖子积分
高级工程师, 积分 5664, 距离下一级还需 2336 积分
高级工程师, 积分 5664, 距离下一级还需 2336 积分
怎么样才能上手CubeMX?哪里能找到类似固件库里的丰富的例程?目前来说还没有官方例程,需要自己摸索。
技术新星奖章
人才类勋章
时间类勋章
时间类勋章
沉静之湖泊
发帖类勋章
时间类勋章
无冕之王奖章
等级类勋章
技术领袖奖章
人才类勋章
时间类勋章
坚毅之洋流
发帖类勋章
荣誉元老奖章
等级类勋章
技术奇才奖章
人才类勋章
湍急之河流
发帖类勋章
时间类勋章
精华达人奖章
等级类勋章
时间类勋章
欢快之小溪
发帖类勋章
希望之星奖章
等级类勋章一步一步使用STM32CubeMX和X_CubeBLE例程开发基于STM32的低功耗蓝牙应用-2017年-意法半导体STM32/STM8技术社区
一步一步使用STM32CubeMX和X_CubeBLE例程开发基于STM32的低功耗蓝牙应用
一步一步使用STM32CubeMX和X_CubeBLE例程开发基于STM32的低功耗蓝牙应用
Tel: 3-8064
备案号: 苏ICP备号-2}

我要回帖

更多关于 如何利用图片进行搜索 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信