STM32CubeMX-Keil 通用配置
XiaoMa 博士生

在实际项目开发中,我们会发现,有很多配置是通用的,有很多代码是复用的。本文总结了 STM32CubeMX 和 Keil5 MDK 的一些通用设置,以供 STM32 项目开发时查阅,帮助开发者快速配置好所需环境。

STM32CubeMX 通用配置

创建工程

打开 STM32CubeMX 软件,点击 ACCESS TO MCU SELECTOR,在左上搜索框输入芯片型号(如 429ig),在右下角选择自己的芯片,右上角点击 Start Project

image-20230404220608706
图 1.1 芯片型号选择

配置 SYS

Debug 选择 Serial Wire(SW)

image-20230404220953836
图 1.2 SYS 配置

配置 RCC

HSE 选择 Crystal/Ceramic Resonator

打开 Clock Configuration 界面,配置如图,选择 HSEPLLCLK,在 HCLK(MHz) 框中输入 168 后回车,自动配置所有数据。

image-20230404221647685
图 1.3 RCC 配置
image-20230404221440617
图 1.4 Clock Configuration 界面配置

配置工程

配置包括工程名称、存储位置、IDE 选择、代码生成等选项,如下图所示。

image-20230404222946177
图 1.5 工程文件名称等配置
image-20230404222803173
图 1.6 代码生成配置

生成代码

右上角点击 GENERATE CODE,接着点击 Close。(如果直接点 Open Project,Keil5 中没有代码提示。)

image-20230411231055330
图 1.7 生成代码操作

Keil5 MDK 通用配置

打开项目工程文件

找到存储位置,路径:E:\Data\DuoJi\TEST\MDK-ARM,双击打开 xxx.uvprojx 文件。

image-20230404225006620
图 2.1 项目工程文件位置

编译代码

打开项目后的第一件事:编译代码,关联出头文件。

image-20230411232200457
图 2.2 编译代码

仿真器连接配置

点击 魔法棒Debug → 选择 DAPSetting,可以看到已经识别到了芯片。然后点击 Flash DownloadReset and Run,为了能够下载进程序后,就开始运行代码,不用手动再去点一下复位键。配置完成后,点 OK

image-20230411232411409 image-20230411232537940
image-20230411232702468 image-20230411233154977
图 2.3 仿真器连接配置

下载程序

写完代码后,先编译一下,再下载到开发板。

image-20230411233442568
图 2.4 下载程序流程

宏定义 LED 灯

写在 main.c 文件中的 main() 函数外。

1
2
3
4
5
6
7
8
/* USER CODE BEGIN 0 */
#define LED0_ON() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET) //LED0 亮
#define LED0_OFF() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET) //LED0 灭
#define LED1_ON() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET) //LED1 亮
#define LED1_OFF() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET) //LED1 灭
#define LED0_TOG() HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1) //LED0 闪烁
#define LED1_TOG() HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0) //LED1 闪烁
/* USER CODE END 0 */

宏定义按键

写在 main.c 文件中的 main() 函数外。判断按键是否按下,使用 if(KEY0 == 0)

1
2
3
4
5
/* USER CODE BEGIN 0 */
# define KEY0 HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_3)
# define KEY1 HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_2)
# define KEY2 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)
/* USER CODE END 0 */