打印
[STM32H7]

【STM32H745I-DISCO试用】+ 新建工程 + 点灯

[复制链接]
2247|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

[i=s] 本帖最后由 飞思啦 于 2025-2-27 17:19 编辑 [/i]<br /> <br />

前言

很多人对stm32的开发普遍使用keil,IAR这两个工具,追求调试方便,编译快速都会选择keil,追求编译后的文件大小极致小,会选择IAR,不过这两个软件都是收费软件,商业目的并不能用。还有些人会选择eclipse+gcc或者vscode+gcc的方式,这个属于比较新颖的方式,我在日常的开发中,使用的是stm32cubeMX生成代码,然后用vscode看代码。再直接用gcc编译,没有继承到vscode中(stm32开发用的少,所以没继承)。不过这里选择使用stm32cubeIDE的方式来搭建开发环境,听说该工具支持代码生成、编译、下载、调试一条龙。一起来试试吧。

stm32cubeIDE

STM32CubeIDE是一个高级的C/C++开发平台,专为STM32微控制器和微处理器设计,具备外围设备配置、代码生成、代码编译和调试功能。它基于Eclipse®/CDT™框架和GCC工具链进行开发,并使用GDB进行调试。STM32CubeIDE允许集成现有的数百种插件,这些插件可以完善Eclipse® IDE的功能。

下载IDE

我们首先直接在stm32官网下载stm32cubeIDE,网址如下:

https://www.st.com/en/development-tools/stm32cubeide.html

image.png 在图片中选择自己系统对应的版本下载即可,我们一般都在windows下面开发,选择win版本就行了。

下载H7的package

这个就像是keil一样,不过keil是任意系列单片机都需要单独下载package,但是对于stm32cubeIDE来说,只有一些不常用的需要单独下载package,比如我们的H745单片机,他需要下载STM32Cube MCU Package for STM32H7 series

下载网址如下: https://www.st.com/en/embedded-software/stm32cubeh7.html

打开下载网址之后,可以看见里面有2个包,为什么会有2个,我刚刚打开的时候只是单纯的以为是版本号不一样,既然都是测评,那肯定要下载最新版的package包来测评。 但是其实并不是单纯的版本号不一样。其实从他们两个的名字上就可以看出来一点端倪,可惜我当初没发现,折腾了一段时间。

image.png

1、下载

要使用最新版的1.12.1版本的package,需要直接把2个包都下载了,下载后发现一个包的大小为1.09GB(en.stm32cubeh7-v1-12-0.zip),另一个包的大小为615MB(en.stm32cubeh7-v1-12-1.zip)。感觉很奇怪,版本升级之后,大小差异怎么会这么大?

2、对比

使用对比软件对比两个包的差异,可以发现除了Project的差异比较小之外,其他几个文件夹的差异都是很大,其中大多都是en.stm32cubeh7-v1-12-0.zip包里面有,但是en.stm32cubeh7-v1-12-1.zip包里面没有,比如driver文件夹下面的BSP文件夹,en.stm32cubeh7-v1-12-1居然是空的。自此有了初步结论,1.21.1是一个补丁包,需要搭配1.12.0来使用。接下来就来验证。

image.png

3、安装pack

和keil一样,stm32CubeIDE针对H7这种芯片,也是需要额外自己安装pack包的。首先我们在打开软件之后,在Help里面选择Configuration Tool,然后选择“Manage Embedded Software Packages”来打开包管理器。

image.png 在弹出的页面接着选择“From Loacl”来导入pack包,选择1.12.1版本的包。然后确认后,发现其存在弹窗,提示报错。此时进一步验证了我们猜想,1.12.1包只是一个补丁包,需要在1.12.0的基础上打补丁。

image.png

顺便一提,H7的pack包安装好了之后,包很大,很占空间,而且stm32cubeide软件默认是把包安装在C盘的,对C盘空间有限的人来说,这可不好。这里教教大家如何修改包安装的路径。打开 stm32cubeIDE软件,然后依次点击Window,然后选择Preference。

image.png

于是我们按照我们的猜想,首先导入1.12.0的包,导入成功以后,再在包安装的位置,解压1.12.1的包进行覆盖。

导入1.12.0成功.png 然后开始解压1.12.1的包,解压到我们的安装路径

image.png 遇到重名文件选择覆盖即可

image.png 解压完成后,记得修改目录为1.12.1

image.png

然后到包管理工具里面,发现原来的1.12.0没有被选中了,任意一个包都没被选中,没关系,可以联网,点一下“Refresh”按钮。等待刷新完成以后,就可以发现出现了1.12.1版本了。

image.png

新建工程

选择新建一个stm32的工程,如下图所示

image.png

我们的是stm32官方的板子,新建工程的时候,选择“Board Selector”,然后选择“STM32H745I-DISCO”板子,然后点击next。

image.png

工程名字和工程存放路径可以自己定义就行了。确定之后,会开始初始化工程,这里等的挺久的,可能是我电脑不行,没事,慢慢等,

image.png 加载成功以后,会自动打开test.ioc文件,就是打开工程配置文件,让你配置GPIO,时钟之类的,这里先不管它,我们确保工程能新建成功。

image.png

编译工程

编译

因为H745是双核,我们首先编译CM4内核的程序,选择CM4的工程,然后点击编译按钮。

image.png

同理,对于M7的内核,也是一样的,直接选中工程,点击编辑按钮即可。 可以发现两个工程编译是没有任何报错的,不过查看编译后生成的文件,发现一个问题,编译后生成了map/elf文件,但是为什么没有生成用于烧录的bin文件或者hex文件?接下来说一说怎么生成hex和bin文件。

生成烧录文件

右键选中工程,注意不是整个工程。而是CM4和CM7需要分别设置。如下图所示。勾选两个框,分别用于生成bin文件和hex文件。

image.png

之后需要右键先清除一下工程,再重新编译工程即可。

image.png

image.png

添加点灯代码

配置引脚

我们前面创建工程的时候是基于板子创建工程的,所以在引脚配置页面可以看见,板子用到的引脚都已经配置了,配置了名称,GPIO方向等,但是没有把引脚引入CM4或者CM7。如下图所示,点灯引脚PI13配置为输出,名称为LD2 [Green Led],无上下拉,但是“Pin Context Assignment”却配置为free,我们这里把它引入CM4内核观察观察。

image.png

image.png

保存后弹窗提示是否立即生成代码,选择是

image.png

代码变化

生成代码之后,打开CM4工程的main.c文件可以看到代码自动对我们刚刚配置的点灯引脚初始化了。

image.png

添加灯闪烁代码

HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(500);

对于CM7核,用同样的办法,可以配置另一个灯,实现CM4和CM7两个核分别控制一个灯。

至此点灯完成

使用特权

评论回复
沙发
jobszheng| | 2025-3-6 10:09 | 只看该作者
cubeide看上去使用起来也挺方便啊!
楼主,编译与下载的速度快吗?

使用特权

评论回复
板凳
飞思啦|  楼主 | 2025-3-6 14:50 | 只看该作者
jobszheng 发表于 2025-3-6 10:09
cubeide看上去使用起来也挺方便啊!
楼主,编译与下载的速度快吗?

我的电脑比较老了,编译速度还行,下载速度因为代码小,还是很快

使用特权

评论回复
地板
yangjiaxu| | 2025-3-6 14:57 | 只看该作者
H7的引脚太多,但是用cubemx真的是不错,底层代码可以少写不少呢

使用特权

评论回复
5
飞思啦|  楼主 | 2025-3-6 15:02 | 只看该作者
yangjiaxu 发表于 2025-3-6 14:57
H7的引脚太多,但是用cubemx真的是不错,底层代码可以少写不少呢

现在我看好多人都直接上cubemxIDE了,比cubemx多了个编译功能

使用特权

评论回复
6
yangjiaxu| | 2025-3-6 15:15 | 只看该作者
飞思啦 发表于 2025-3-6 15:02
现在我看好多人都直接上cubemxIDE了,比cubemx多了个编译功能

对的,而且还免费,主要还是IDE界面,方便的很呐

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

229

帖子

2

粉丝