打印
[其他ST产品]

STM32CubeMX 图形配置工具基本操作过程

[复制链接]
789|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2022-11-18 09:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、STM32CubeMX 简介
STM32CubeMX 是 ST 意法半导体近年来大力推荐的 STM32 芯片图形化配置工具,允许用户使用图形化向导生成 C 初始化代码,大大减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了 STM32 全系列芯片。具有如下特性:
1)直观的选择 MCU 型号,可指定系列、封装、外设数量等条件;
2)微控制器图形化配置;
3)自动处理引脚冲突;
4)动态设置时钟树,生成系统时钟配置代码;
5)可以动态设置外围和中间件模式和初始化;
6)功耗预测;
7)C 代码工程生成器覆盖了 STM32 微控制器初始化编译软件,如 IAR,KEIL,GCC;
8)可以独立使用或者作为 Eclipse 插件使用。

STM32Cube 包含 STM32CubeMX 图形工具和 STM32Cube 库两个部分,使用 STM32CubeMX 配置生成的代码,是基于 STM32Cube 库的。使用 STM32CubeMX 配置出来的初始化代码,和STM32Cube 库兼容,例如硬件抽象层代码就是使用的STM32的HAL库。不同系列芯片,会有不同的 STM32Cube 库支持,而 STM32CubeMX 图形工具只有一种。所以配置不同的 STM32 系列芯片,选择不同STM32Cube 库即可。

使用特权

评论回复
沙发
jcky001|  楼主 | 2022-11-18 09:17 | 只看该作者
二、STM32CubeMX 运行环境搭建
STM32CubeMX 运行环境搭建包含两个部分。首先是 Java 运行环境安装,安装完 Java 运行环境之后,可以打开 Windows 的命令输入框,输入:java –version 命令,如果显示 Java 版本信息,则安装成功。
其次是STM32CubeMX 软件安装。可以从 ST官方下载,下载地址为:ST网站。 安装完成后,打开软件如下图所示:


在软件中指定 STM32Cube 软件包(本次用的开发板是L4系列的),依次点击 Help->Updater Settings,如下图所示:



三、使用 STM32CubeMX 工具配置工程模板
1)工程初步建立和保存
新工程的建立有两种方法,一是打开 STM32CubeMX 之后在主界面点击 New Project 按钮,二是在菜单栏依次点击 File->New Project。操作方法如下图所示:



在弹出的窗口中,依次在选项卡 Series选择STM32L4,在选项卡Lines选择STM32L4x5,在选项卡Package选择 LQFP100。最后在右下方的MCUs List里双击STM32L475VET芯片型号。


双击后进入Pinout 选项卡,界面展示芯片完整引脚图,如下图所示。点击菜单栏 File->Save Project,保存工程到某个文件夹下面即可。


使用特权

评论回复
板凳
jcky001|  楼主 | 2022-11-18 09:25 | 只看该作者
2)RCC 设置
在 STM32CubeMX 中,RCC 相关设置非常简单,在Pinout选项卡里,选择Peripherals->RCC进入RCC配置栏,操作步骤如下图所示:



上图中,RCC 配置栏只有 6 个配置项:
1)选项 High Speed Clock(HSE)用来配置 HSE;
2)选项 Low Speed Clock(LSE)用来配置 LSE;
3)选项 Master Clock Output 用来选择是否使能 MCO 引脚时钟输出;
4)选项 LSCO Clock Output 用来选择是否使能将低速时钟输出到外部 LSCO;
5)选项 SAI1 Extern Clock 用来配置是否使能外部 SAI1 时钟;
6)选项SAI2 Extern Clock 用来配置是否使能外部 SAI2 时钟。
本次只使用到 HSE,所以设置选项 High Speed Clock(HSE)的值为Crystal/Ceramic Resonator(使用晶振/陶瓷振荡器)。这里Bypass Clock Source 的意思是旁路时钟源,也就是不使用使用晶振/陶瓷振荡器,直接通过外部提供一个可靠的 4-26MHz 时钟作为 HSE。
配置好的 RCC 配置选项如下图所示:



上图中,打开 HSE 之后,右边的引脚图中,相应的引脚会由灰色变为绿色,表示该引脚已经被使用。

3)时钟系统(时钟树)配置
在使用 STM32CubeMX 配置时钟树之前,需要充分理解 STM32 时钟系统。
点击 Clock Configuration 选项卡进入时钟系统配置栏,如下图所示:



可以看到,界面展现一个完整的 STM32L4 时钟系统框图。这个时钟树配置图主要配置外部晶振大小,分频系数,倍频系数以及选择器。在配置过程中,时钟值会动态更新,如果某个时钟值在配置过程中超过允许值,那么相应的选项框会红色提示。
这里,配置的目标是:
1)PLL时钟为 PLLCLK=HSEN/(MR)=8MHz20/(12)=80MHz;
2)选择系统时钟源为 PLL,所以系统时钟SYSCLK=80MHz;
3)AHB 分频系数为 1,故其频率为 HCLK=SYSCLK/1=80MHz;
4)APB1 分频系数为 1,故其频率为PCLK1=HCLK/1=80MHz;
5)APB2 分频系数为 1,故其频率为 PCLK2=HCLK/1=80MHz。

下图是配置系统时钟的截图:

[size=0.83em]
20201205192428555.jpg (47.65 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]昨天 18:52 上传




系统时钟配置分为七个步骤:
① 时钟源参数设置:HSE 或者 HSI 配置。这里选择 HSE 为时钟源,所以之前必须在 RCC 配置中开启 HSE;
② 时钟源选择:HSE、HSI 还是 MSI,选择 HSE ;
③ PLL 分频系数 M 配置,设置为 1;
④ 主 PLL 倍频系数 N 配置,设置为 20;
⑤ 主 PLL 分频系数 R 配置,配置为 2;
⑥ 系统时钟时钟源选择:PLL,HSI,HSE 还是 MSI。选择 PLLCLK ;
⑦ 经过上述配置,此时 SYSCLK=80Mhz。

使用特权

评论回复
地板
jcky001|  楼主 | 2022-11-18 09:27 | 只看该作者
下图是配置 SYSTICK、AHB、APB1 和 APB2 的分频系数的截图:



AHB,APB1 和 APB2 总线时钟以及 Systick 时钟的最终来源都是系统时钟 SYSCLK。
AHB 总线时钟 HCLK 是由 SYSCLK 经过 AHB 预分频器之后的来,这里设置 AHB 预分频器为1,则 HCLK 为80MHz。
得到 HCLK 之后,在图标号 9~11 处依次配置 Systick,APB1 和 APB2 的分频系数分别为1,1 和 1 。
配置完成之后,HCLK=80MHZ,Systick=80MHz,PCLK1=80MHz,PCLK2=80MHz。

4)GPIO 功能引脚配置
开发板上的 PE7、PE8 和 PE9 引脚连接了一个 RGB 灯,TM32CubeMX 可直接在芯片引脚图上配置 IO 口参数。
单击STM32CubeMX的Pinout选项卡,在搜索栏输入 PE7、PE8 和 PE9 即可找到 PE7、PE8和PE9在引脚图中的位置,如下图所示:



点击PE7,在弹出的下拉菜单中,选择IO口的功能为GPIO_Output。用同样的方法配置PE8和PE9,选择功能为GPIO_Oput 。注意,如果要配置IO口为外部中断引脚或其他复用功能,选择相应的选项即可。
配置完IO口功能之后,还要配置IO口的速度,上下拉等参数。单击 Configuration 选项卡,单击GPIO,如下图所示:



进入IO口配置界面之后,界面会列出所有使用到的IO口的参数配置。选中PE7栏,就会在显示框下方显示对应的IO口详细配置信息,对参数进行相应配置即可。配置方法如下图所示:

[size=0.83em]
20201205194458500.jpg (60.53 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]昨天 18:52 上传





配置完成之后,点击 OK 后界面回到 Configuration选项卡界面。 对于选项卡 Power Consumption Calculator,作用是对功耗进行计算。

使用特权

评论回复
5
jcky001|  楼主 | 2022-11-18 09:30 | 只看该作者
5)生成工程源码
经过上述步骤,一个完整的系统已经配置完成。接下来,使用 STM32CubeMX生成工程源码。在 STM32CubeMX 操作界面,依次点击菜单 Project->Generate Code生成源码,操作方法如下图所示:





配置完成后,点击OK开始生产源码。源码生产完成之后,就保存在我们 Project Location选项配置的目录中,同时弹出生成成功提示界面,我们可以点击界面的“Open Folder”按钮打开工程保存目录,也可以点击界面的“Open Project”按钮直接使用 IDE 打开工程。
生产的工程目录结构如下图所示:



上图中:
Drivers 文件夹存放的是 HAL 库文件和 CMSIS 相关文件;
Inc 文件夹存放的是工程必须的部分头文件;
MDK-ARM文件夹存放的是 MDK 工程文件;
Src文件夹存放的是工程必须的部分源文件;
20201205.ioc是 STM32CubeMX 工程文件,双击该文件工程就会在 STM32CubeMX 中被打开。

6)编写用户代码
首先打开生成的工程模板进行编译,发现没有任何错误和警告。
该工程模板将时钟系统配置源码放在main.c 源文件中。打开 main.c 源文件可以看到该文件定义了两个关键函数 SystemClock_Config 和 MX_GPIO_Init,并且在 main 函数中调用了这两个函数。SystemClock_Config 函数用来配置时钟系统,MX_GPIO_Init 函数用来初始化 PE7、PE8和PE9的相关配置。
对main函数进行编辑,删掉源码注释,关键源码如下:

  • /* USER CODE BEGIN 0 */
  • void Delay(__IO uint32_t nCount);
  • void Delay(__IO uint32_t nCount)
  • {
  •    while(nCount--){};
  • }
  • /* USER CODE END 0 */
  • int main(void)
  • {
  •    HAL_Init();
  •    SystemClock_Config();
  •    MX_GPIO_Init();
  •    /* USER CODE BEGIN WHILE */
  •    while (1)
  •    {
  •    /* USER CODE END WHILE */
  •    /* USER CODE BEGIN 3 */
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_7, GPIO_PIN_SET);    //PE7  置 1
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_SET);    //PE8  置 1
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_SET);    //PE9  置 1
  •    Delay(0x7FFFFF);
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_7, GPIO_PIN_RESET);  //PE7  置 0
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_RESET);  //PE8  置 0
  •    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_RESET);  //PE9  置 0
  •    Delay(0x7FFFFF);
  •    /* USER CODE END 3 */
  •    }
  • }


复制代码


完成后,对工程进行编译,发现没有任何警告和错误。运行系统,实现 RGB 灯闪烁的效果。

使用特权

评论回复
6
OKAKAKO| | 2024-6-25 15:03 | 只看该作者
STM32CubeMX 图形配置工具非常简单

使用特权

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

本版积分规则

1505

主题

4522

帖子

6

粉丝