STM32F4 HAL库开发 -- STM32CubeMX

Posted 聚优致成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F4 HAL库开发 -- STM32CubeMX相关的知识,希望对你有一定的参考价值。

一、STM32CubeMX 简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时间和费用。 STM32CubeMX几乎覆盖了 STM32 全系列芯片。它具有如下特性:
① 直观的选择 MCU 型号,可指定系列、封装、外设数量等条件
② 微控制器图形化配置
③ 自动处理引脚冲突
④ 动态设置时钟树,生成系统时钟配置代码
⑤ 可以动态设置外围和中间件模式和初始化
⑥ 功耗预测
⑦ C 代码工程生成器覆盖了 STM32 微控制器初始化编译软件,如 IAR, KEIL, GCC。
⑧ 可以独立使用或者作为 Eclipse 插件使用

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

stm32cubemx用户手册中文版下载:
https://www.st.com/zh/development-tools/stm32cubemx.html#
在这里插入图片描述
在这里插入图片描述

二、STM32CubeMX 运行环境搭建

STM32CubeMX 运行环境搭建包含两个部分。首先是 Java 运行环境安装,其次是
STM32CubeMX 软件安装。 对于 Java 运行环境,大家可以到 Java 官网 www.java.com 下载最新的 Java 软件。这里大家需要注意, STM32CubeMX 的 Java 运行环境版本必须是 V1.7 及以上,如果你的电脑安装过 V1.7 以下版本,请先删掉后重新安装最新版本。
安装完 Java 运行环境之后, 为了检测是否正常安装,我们可以打开 Windows 的命令输入框,输入: java -version 命令,如果显示 Java 版本信息,则安装成功。
在这里插入图片描述
按照提示安装STM32CubeMX,安装完成后打开软件,界面如下图:
在这里插入图片描述
在线安装HAL库:
打开安装好的 STM32CubeMX 软件 点上面的Help -> Manage embedded software packages
在这里插入图片描述
会跳出来一个选择型号界面 勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。
在这里插入图片描述

三、使用 STM32CubeMX 工具配置工程模板

大多数情况下,我们都只使用STM32CubeMX来生成工程的时钟系统初始化代码以及外设的初始化代码,因为用户控制逻辑代码是无法在STM32CubeMX中完成的,需要用户自己根据需求来实现。使用STM32CubeMX配置工程的一般步骤是:
1)工程初步建立和保存
2)RCC设置
3)时钟系统(时钟树)配置
4)GPIO功能引脚设置
5)生成工程源码
6)编写用户代码
接下来我们将按照上面6个步骤,依次教大家使用STM32CubeMX工具生成一个完整的工程。

1、工程初步建立和保存

工程建立的方法有两种,第一种方法是打开STM32CubeMX之后再主界面点击 New Project 按钮,第二种方法是在菜单栏依次点击 File->New Project。
在这里插入图片描述
点击新建工程按钮之后,会弹出MCU选择窗口。我们依次在选项卡 Series, Lines 和 Package之下选择与我们使用的芯片 STM32F407ZGT6 对应的参数, 然后选择对应的芯片型号, 最后点击Start Project按钮。
在这里插入图片描述
进入Pinout选项卡,这个时候界面会展示芯片完整引脚图。
在这里插入图片描述
在引脚图,我们可以对引脚功能进行配置。图中黄色的引脚主要是一些电源和GND引脚。如果某个引脚被使用,那么会显示为绿色。

外设和中间件树面板中使用的图标和颜色方案:
在这里插入图片描述

2、RCC设置

对于STM32芯片而言,RCC配置的重要性不言而喻。在STM32CubeMX中,RCC相关设置却非常简单,因为它把时钟系统独立出来设置。在操作界面,搜搜RCC,点击进入RCC配置栏。
在这里插入图片描述
设置:
设置选项 High Speed Clock( HSE )的值为Crystal/Ceramic Resonator(使用晶振/陶瓷振荡器)
在这里插入图片描述

3、时钟系统(时钟树)配置

在使用STM32CubeMX配置时钟树之前,大家需要充分理解STM32时钟系统。
Clock Configuration 选项卡即可进入时钟系统配置栏。
在这里插入图片描述
进入Clock Configuration配置栏之后可以看到,界面展现一个完整的STM32F407时钟系统框图。从这个时钟配置图可以看出,配置的主要是外部晶振大小,分频系数,倍频系数以及选择器。在我们配置的工程中,时钟值会动态更新,如果某个时钟值在配置过程中超过允许值,那么相应的选项框会红色提示。
我们把系统时钟配置分为6个步骤,分别用①~⑥标号表示,详细过程为:
① 时钟源参数设置: HSE 或者 HSI 配置。这里我们选择 HSE 为时钟源,所以我们之前必须在 RCC 配置中我们开启 HSE。
② 时钟源选择: HSE 还是 HSI。这里我们配置选择器选择 HSE 即可。
③ PLL 分频系数 M 配置。分频系数 M 我们设置为 25。
④ 主 PLL 倍频系数 N 配置。倍频系数 N 我们设置为 336。
⑤ 主 PLL 分频系数 P 配置。分频系数 P 我们配置为 2。
⑥ 系统时钟时钟源选择: PLL,HSI 还是 HSE。 这里毫无疑问,我们选择 PLL,选择器选择PLLCLK 即可。
经过上面6个步骤,就会生成标准的180MHz系统时钟。接下来我们只需要配置AHB,APB1,APB2和Systick的分频系数,就可以完全实现函数Stm_Clock_Init配置的时钟系统。
AHB, APB1 和 APB2 总线时钟以及 Systick 时钟的最终来源都是系统时钟 SYSCLK。其中AHB 总线时钟 HCLK 是由 SYSCLK 经过 AHB 预分频器之后的来,如果我们要设置 HCLK 为180MHz,那么我们只需要配置图中标号⑦的地方为 1 即可。得到 HCLK 之后, 接下来我们将在图标号⑧~⑩处同样的方法依次配置 Systick, APB 以及 APB2 分频系数分别为 1, 4 和 2 即可 。 配 置 完 成 之 后 , 那 么 HCLK=168MHZ , Systick 时 钟 为 168/1MHz=168MHz ,PCLK1=168MHz/4=42MHz, PCLK2=168MHz/2=84MHz。

4、GPIO功能引脚设置

可以在搜索栏输入要搜索的引脚,在引脚图上会显示该引脚的位置。
在这里插入图片描述
引脚图中点击PC8,会出现该IO口的功能选项。
在这里插入图片描述
在这里插入图片描述
GPIO output level: 引脚电平设置 高/低
GPIO mode: GPIO模式 推挽输出/开漏输出
GPIO Pull-up/Pull-down: 上拉下拉电阻 上拉电阻/下拉电阻/无上拉或下拉
Maxinum output speed: 引脚速度设置 低速/中速/高速
User Label: 用户标签 给引脚设置名称 如LED0

5、UART设置

点击Mode选择Asynchronous(异步)
在这里插入图片描述
在这里插入图片描述
设置波特率为115200 Bits/s。传输数据长度为8 Bit。奇偶检验无,停止位1 接收和发送都使能
在这里插入图片描述
DMA Settings,点击Add,选择UART5_RX,UART5_TX; Priority 优先级选择 Very High 非常高。
在这里插入图片描述
设置中断 UART5 global interrupt 在Enabled 列打对勾。
在这里插入图片描述

6、设置定时器

Activated 激活
在这里插入图片描述

7、看门狗设置

在这里插入图片描述
IWDG时钟预分频系数 64分频
计数器重装载值 4095 RLR
超出(溢出)时间计算:
Tout=((64×2^PRER) ×RLR)/LSI时钟频率

8、生成工程源码

在这里插入图片描述
在这里插入图片描述
然后点击GENERATE CODE 创建工程
在这里插入图片描述

以上是关于STM32F4 HAL库开发 -- STM32CubeMX的主要内容,如果未能解决你的问题,请参考以下文章

STM32F4 HAL库开发 -- STM32F407引脚图

STM32F4 HAL库开发 -- STM32F407引脚图

STM32F4 HAL库开发 -- STM32F407引脚图

STM32F4 HAL库开发 -- DMA

STM32F4 HAL库开发 -- 工程模板解读

STM32F4 HAL库开发 -- 工程模板解读