STM32 教程: 01 环境安装与配置

date
Feb 4, 2024
slug
stm32-01
tags
STM32
嵌入式
status
Published
summary
(篇 01)STM32 菜鸟教程:配置入门 CubeMX、Keil IDE,搭建环境
type
Post

前言

这是笔者在深圳科创学院跟随李靖桥 (北京交通大学) 学习 STM32 单片机的学习笔记。
之所以对此进行详细记录,是因为目前互联网上仍然没有很完备的教程,只言片语、胡言乱语,令人摸不着头脑。
本文所述硬件基于大疆 RoboMaster C 型开发板,软件开发平台为 Windows。
建议读者从大疆 RM 官网下载好 C 型开发版原理图、嵌入式软件开发教程手册。建议读者从 Github 下载好 C 型开发版例程。

配置 STM32CubeMX

概述

STM32CubeMX 是意法半导体公司开发的一款集成开发环境工具,用于帮助开发人员快速配置和生成 STM32 微控制器的初始化代码。它可以帮助开发人员通过图形化界面选择所需的外设和功能,并自动生成相应的初始化代码。这样,开发人员可以节省大量的时间和精力,不需要手动编写繁琐的初始化代码。同时,STM32CubeMX 还提供了一些额外的功能,如时钟配置、引脚映射、中断配置等。
总结:STM32CubeMX 提供了大量繁琐的底层代码,不用不行。

下载

前往北京交通大学 RoboMaster 战队官网资料库:
下载 SetupSTM32CubeMX-6.6.0-Win.exe:
notion image
一路下一步安装即可。

通过 STM32CubeMX 生成项目

打开桌面/开始菜单中的 STM32CubeMX:
notion image
这是 STM32CubeMX 的主页,在这里可以打开已有项目,也可以生成新的项目。
这里我们要新建 (New) 项目:由于使用的不是 ST 开发板 (国内买到的正点原子之类都不属于 ST 开发板),选择从 MCU 开始我们的项目。
在新建项目的过程中,有些步骤可能会出现要求下载依赖的情况,同意下载并耐心等待下载完成即可。请自备科学环境!并确保打开虚拟网卡模式。
稍等片刻,进入配置页面:
notion image
在这里我们输入我们使用的 MCU 型号,并开始项目。
芯片型号可以根据原理图得到,也可以通过观察芯片表面的丝印得到。如果你使用的是大疆开发板,可以看到在 RoboMaster 开发板 C 型中使用的 MCU 型号为 STM32F407IGH6TR。如果你购买的是第三方开发板,请自行查阅购买链接。
这是大疆 RoboMaster C 型开发板原理图,直连 MCU 的引脚框框下面都会附上定义。
这是大疆 RoboMaster C 型开发板原理图,直连 MCU 的引脚框框下面都会附上定义。
按照箭头依次填写并选择相应的 MCU,点击 Start Project,将会弹出配置页面如下:在 SystemCore 中选择 RCC,配置 HSE 为晶体振荡器。
notion image
👉
Pinout & Configuration 引脚与配置 System Core 系统核心 RCC(Reset and Clock Controler) 重置和时钟控制器 HSC(High Speed Clock) 高速时钟 Crystal / Ceramic Resonator 晶振 Clock Configuration 时钟配置 Project Manager 项目管理器
完成以上配置后,点击 Clock Configuration 开始配置时钟树:
notion image
配置晶振的频率,配置多路复用器和时钟频率。晶振频率可由原理图得到或观察晶振封装丝 印。SYSCLK 是系统时钟,与 CPU 计算速度相关,HCLK 用于为外设提供时钟信号,配置指定 频率后,软件会自动计算各倍频与分频系数。
STM32 一般有 4 个时钟,HSI 内部高速时钟,HSE 外部高速时钟,LSI 内部低速时钟,LSE 内部高速时钟。LSE 和 LSI 一般用于计时(因为 2^15 = 32768,经过分频就可以得到精确的 1ms)和看门狗。HSE 和 HSI 一般用于系统时钟和外设时钟,也是整个系统的主时钟,HSE 精度通常较 HSI 更好,所有一般优先选择使用 HSE,但对于 PCB(印刷电路板)面积敏感的应用,没有足够的空间放置晶振,则可以选择使用 HSI。
👉
我是小白,不会看原理图,不知道每块板子分频应该怎么做? 正解:直接上网搜索对应型号的分频设置!
👉
提示:只需要选好 HSE、输入 Input Frequency、输入 HCLK,CubeMX 软件将会自动求出剩余部分的分频系数!
👉
HCLK 相当于电脑 CPU 的频率,可以进行超频(也就是拉到 168MHz Max 以上)但是不稳定,小白直接输入 Max 值即可,这是厂商标定的稳定频率
下面选择 Project Manager 配置项目选项:
notion image
在这里需要配置项目名称,位置,工具链/IDE,请注意:项目位置 (Project Location) 字段在路径中不能包含中文,建议放在 C/D 盘根目录下,工具链/IDE 我们使用 MDK-ARM
👉
这里我们使用 Keil IDE 配置环境,此 IDE 非常难用,在未来的进阶教程中会详细讲述迁移到 CLion 的例子。
点击 Code Generator:
notion image
👉
我们要求在 Code Generator 中选择生成独立的外设文件,这样可以使得 main.c 更加简洁。
完成以上配置后,即可点击 GENERATE CODE (右上角) 生成项目代码。
生成代码后,会弹出代码生成成功的提示窗口,可以点击 Open Project 打开项目,如果已经打开项目,点击 Close 关闭本窗口即可。STM32CubeMX 中的所有配置均为立即生效,无需单独保存!
👉
别急着关闭!之后当我们需要配置 GPIO/CAN/SPI/UART/PWM/Timer 时,仍然需要时不时地使用 CubeMX 来生成代码。

配置 keil

下载

在北京交通大学 RoboMaster 战队资料库下载 MDK537.EXE:
notion image
下载后,一路下一步完成安装,桌面上出现 Keil uVision5。

入门

从 CubeMX 生成的项目路径打开 μVision 5 工程文件(.uvprojx)即可进入 Keil IDE:
notion image
接着我们就进入了 Keil μVision 5 的窗口:
notion image
从左至右的常用功能说明:
  • Build (编译) 写完程序后需要将代码编译为二进制文件才能烧录进开发板中。
  • Rebuild (重编译) 编译所有的文件,而 Build 只编译修改后的代码,可以解决一些问题。
  • Download (下载/烧录) 将编译后的文件烧录到开发板中。注意:默认情况下需要按下 RST 按键开发板才会重启,加载新的用户程序。
  • Options for Target (编译设置) 设置编译相关的工具链。
  • Debug (调试) 进入调试模式,可以在运行过程中设置断点、看到变量的实时值。
  • Configuration (通用设置) 设置 IDE 相关,例如外观、补全。

配置

因为 STM32CubeMX 生成的项目默认配置使用 AC5(ARM Compiler Version 5)编译器,而我们使用的 MDK537 版本不再默认安装 AC5 而默认安装 AC6 编译器,因此需要更换编译器才可以正常编译。点击魔术棒图标 (Options for Target) 进入编译设置项。将 Target ➡️ Code Generation ➡️ ARM Compiler 中选项改为 Use Default Compiler Version 6
notion image
接下来我们配置调试器。调试器是 PC 与开发板连接的工具,我们的代码烧录、调试都需要通过调试器进行。同样在 Options for Target 中,在 Debug 选项卡内,将 Use 改为对应的调试器 (按实际情况选择)
notion image
👉
环境配置完成后,先点击编译,再点击下载,就可以把程序烧录到 MCU 中。

© Regir 2023 - 2024