[应用相关]

STM32CubeMX配置与代码生成

[复制链接]
1984|11
手机看帖
扫描二维码
随时随地手机跟帖
和下土|  楼主 | 2021-7-23 23:43 | 显示全部楼层 |阅读模式
目的

STM32CubeIDE中整合了STM32CubeMX用来配置芯片资源生成初始化代码,本篇将介绍STM32CubeMX使用方法。

用户界面

界面主要由四部分组成引脚输出和配置、时钟配置、项目管理、工具。其中前两部分关联比较紧密,必须结合在一起调整。下面是具体的说明(主要以图片为主,可以点击查看大图):

3280360fae37e349e5.png

引脚输出和配置

这个分页主要用于配置引脚、外设和中间件:

1787860fae3891273a.png


这个分页中外设和中间件等的详细设置主要是与各自具体的属性功能有关,需要依据具体情况去了解设置。


8315660fae37786e92.png

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:44 | 显示全部楼层
时钟配置
这个分页主要用于配置系统各部分时钟:
5332960fae3c56253c.png

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:44 | 显示全部楼层
项目管理
这个分页主要用于设置代码生成输出方面的选项参数:
6244160fae3db346d9.png
9244960fae3e3068ba.png
2687860fae3e993fa3.png

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:46 | 显示全部楼层
工具
这个分页目前就一个工具,用来模拟计算功耗:

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:47 | 显示全部楼层
6098460fae4444399d.png

使用特权

评论回复
评论
和下土 2021-7-23 23:48 回复TA
这个工具怎么说呢,个人觉得做个参考就好,别在这里花太多时间。 
和下土|  楼主 | 2021-7-23 23:49 | 显示全部楼层
代码生成
STM32CubeMX生成的代码根据设置不同结构也会不同,这里主要讲一下默认情况下生成代码的结构:

用到的 Drivers/CMSIS、Drivers/STM32Fxxx_HAL_Driver 中间件 等会从固件包中直接复制到项目中;
根据用户配置会生成相对应的初始化C代码(.c/.h文件),并将其存储在Inc和
Src文件夹中,默认情况下,包含以下文件:
stm32fxxx_hal_conf.h文件:此文件定义了使能的HAL模块,并将一些参数(如
外部高速振荡器频率)设为预定义的默认值,或根据用户配置(时钟树)进行设
置;
stm32fxxx_hal_msp.c(MSP = MCU支持包):此文件定义了所有初始化函数,以便
根据用户配置(引脚分配、使能时钟、使用DMA和中断)配置外设实例;
main.c负责:
通过调用重置所有外设、初始化闪存接口和SysTick的HAL_init()函数将MCU重
置为已知状态。
配置和初始化系统时钟。
配置和初始化外设未使用的GPIO。
为每个已配置的外设定义和调用外设初始化函数,该函数定义了将传递给相应外设
HAL init函数(转而调用外设HAL MSP初始化函数)的句柄结构。请注意,当使用
LwIP(各自的USB)中间件时,底层以太网(各自的USB外设)的初始化C代码
将从main.c移至LwIP(各自的USB)初始化C代码本身。
main.h文件:
此文件包含与通过 引脚布局选项卡所设置的引脚标签相对应的定义语句,以及通过
配置选项卡所添加的用户项目常量,比如将某个GPIO口用户标签定义为LED,那么在main.h文件中就会出现 #define LED_Pin GPIO_PIN_xx #define LED_GPIO_Port GPIOx 的定义;(一般来说这个文件已经链接了所有库资源,用户自己的文件只要包含这个文件就可以调用其他东西了)

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:50 | 显示全部楼层
STM32CubeMX生成的文件中,用户需要添加代码的话需要添加在特定区间中,不然会在STM32CubeMX重新生成代码后丢失,见下面:
/* USER CODE BEGIN xxx */
写在这之间的代码在STM32CubeMX重新生成代码时不会丢失
/* USER CODE END xxx */

用户额外添加的文件只要不和STM32CubeMX生成的文件文件名重复,也不会在STM32CubeMX生成代码时丢失。

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:51 | 显示全部楼层
更换芯片
更换芯片稍微麻烦点,需要去ST官网下载独立版本的STM32CubeMX并进行安装,然后具体的更换步骤如下(更换操作前注意备份原始项目):

使用STM32CubeMX新建项目,选择新的目标芯片;
项目建立后不要进行任何操作,直接 File > Import Project ... ,选择原始项目的ioc文件导入;
导入后核对Import Project页面中新旧芯片资源的兼容性信息,并选择合适参数,然后点OK确认;
检查当前的STM32CubeMX项目,没问题的话就保存为原始项目同名的ioc文件,然后替换到原始STM32CubeIDE项目中(也可以保存时直接覆盖);
重新打开STM32CubeIDE项目中ioc文件,应该可以看到芯片已经被替换,检查相关资源配置参数和设置,然后点击重新生成代码;
编译项目,如果编译报错则根据错误提示手动进行调整直至编译通过;

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:53 | 显示全部楼层
9870660fae5a4a0cf4.png

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:54 | 显示全部楼层
20190803155142563.gif

使用特权

评论回复
和下土|  楼主 | 2021-7-23 23:55 | 显示全部楼层
本帖最后由 和下土 于 2021-7-23 23:56 编辑


20190803155208171.gif
总结
对于STM32CubeMX的使用这里只是粗略介绍了下,更多使用说明可以参考ST官网的用户手册UM1718(官方文档这个写的非常非常详细,还有大量例子举例),另外在ST中文网还有中文的用户手册《STM32CubeMX用于STM32配置和初始化C代码生成》,下载地址如下(文档不是从最新版本翻译的,仅供参考):
https://www.stmcu.com.cn/Designr ... c6cc354ece119011f63


使用特权

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

本版积分规则

73

主题

926

帖子

0

粉丝