【转载】使用TM32CubeMX 图形配置工具生成STM32 工程代码


版权声明:本文为CSDN博主「诺亚方包」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_40973138/article/details/89044372

www.java.com
注意:STM32CubeMX 的 Java 运行环境版本必须是 V1.7 及以上,如果你的电脑安装过 V1.7 以下版本,请先删掉后重新安装最新版本

http://www.st.com/stm32cube

运行STM32CubeMX 并生成工程代码

软件设置

安装完成STM32CubeMX 并打开:
在这里插入图片描述
首先需要在软件中指定STM32Cube 软件包:点击Help >> Updater Settings
在这里插入图片描述
在Repository Folder 中选择stm32cubexL4 固件包存放目录。
(stm32cube 文件夹名字遵循 STM32Cube_FW_Lx_Vm.n.z 格式,我们指定的“Repository Folder”下面必须存在一个或者多个STM32Cube_FW_Lx_Vm.n.z格式程序包,在STM32CubeMX生成工程的时候,会根据我们选择的芯片型号,去这个目录加载必要的库文件)

使用STM32CubeMX 工具配置工程模板

大多数情况下,我们都只使用 STM32CubeMX 来生成工程的时钟系统初始化代码以及外设的初始化代码,因为用户控制逻辑代码是无法在 STM32CubeMX 中完成的,需要用户自己根据需求来实现。

使用 STM32CubeMX 配置工程的一般步骤:

  1. 工程初步建立并保存;
  2. RCC 设置;
  3. 时钟系统(时钟树)配置;
  4. GPIO 功能引脚配置;
  5. 生成工程源码。

1. 工程初步建立并保存

在这里插入图片描述
在软件初始界面中点击:File >> New Project
弹出MCU 选择窗口进行配置(我以STM32L475 为例):
在这里插入图片描述
左侧一栏选择完成后双击中间第二条(STM32L475VETx)确定选择。
防止软件使用过程中出现意外导致工程没有及时保存,此时先保存一遍,点击:File >> Save Project
在这里插入图片描述
软件工程建立好后(未生成代码):
在这里插入图片描述
在引脚图中,我们可以对引脚功能进行配置。黄色的引脚主要是一些电源和 GND 引脚,如果某个引脚已经被使用,那么会显示为绿色。

2. RCC 设置

按照图片选择这一栏,并选择Crystal/Ceramic Resonator,即设置HSE 的值为使用晶振/陶瓷振荡器。

并可观察到在设置了RCC 时钟后,引脚图中相应管脚由灰变绿:在这里插入图片描述
配置好RCC 后,接下来配置时钟系统树。

3. 时钟系统(时钟树)配置;

在这里插入图片描述
以上设置完成后,HCLK=80MHZ,Systick=80MHz,PCLK1=80MHz,PCLK2=80MHz。
配置完时钟系统之后,这个时候如果我们直接使用软件生成工程,那么我们就可以从工程中提取系统时钟初始化配置相关代码。

4. GPIO 功能引脚配置

在图示位置进行GPIO 引脚搜索,即可找到需要配置的引脚:
在这里插入图片描述
然后便对相应引脚进行输入输出复用等功能进行配置:
在这里插入图片描述
我将PE7、PE8、PE9 都设置为输出模式:
在这里插入图片描述
配置完IO 口功能之后,还要配置 IO 口的速度,上下拉等参数:
在这里插入图片描述
依次点击引脚进行配置:
在这里插入图片描述
在这里插入图片描述

5. 生成工程源码

在生成源码之前首先配置一下生成文件的属性:
在这里插入图片描述
然后点击GENERATE CODE
在这里插入图片描述
在这里插入图片描述
随后可以看到目标文件夹中有如下文件:
在这里插入图片描述

  1. Drivers 文件夹存放的是 HAL 库文件和 CMSIS 相关文件;
  2. Inc 文件夹存放的是工程必须的部分头文件;
  3. MDK-ARM 下面存放的是 MDK 工程文件;
  4. Src 文件夹下面存放的是工程必须的部分源文件;
  5. Template.ioc 是 STM32CubeMX 工程文件。

打开MDK-ARM 中的工程文件并编译:
在这里插入图片描述
在这里插入图片描述
我们就可以发现该工程文件当中确实按照我们设置的那样写好了RCC 和GPIO 配置函数:
在这里插入图片描述
在这里插入图片描述

注意:STM32CubeMX 生成的main.c 文件中,有很多地方有“/* USER CODE BEGIN X /”和“/ USER CODE END X */”格式的注释,我们在这些注释的 BEGIN 和 END 之间编写代码,那么重新生成工程之后,这些代码会保留而不会被覆盖。

大多数情况下,我们使用 STM32CubeMX 主要用来配置时钟系统和外设初始化代码。

 

相关