📖 第 8 章:新建HAL版本MDK工程(HAL-Version MDK Project)

🔧 正点原子《DMF407 开发指南》V1.0 · Chapter 8
🗨️ 「HAL 工程就像搭乐高:CubeMX 给零件,main.c 拼起来。」
这一章在干嘛? 同样新建工程模板,这次是 HAL 库版本。从 CubeMX 生成 → MDK 二次配置 → 编译下载。后续所有实验都基于这套模板。
8.1 新建 HAL 库版本 MDK 工程8.2 下载验证

8.1 新建 HAL 库版本 MDK 工程

8.1.1 CubeMX 工程生成

  1. New Project → 选芯片 STM32F407IGT6;
  2. Pinout & Configuration 里点亮要用的外设(GPIO/USART/TIM);
  3. Clock Configuration 配置时钟树(默认 168 MHz);
  4. Project Manager
  1. GENERATE CODE → 在路径下得到 MDK-ARM/Template.uvprojx

原书图 8.1.1:CubeMX 工程生成界面
原书图 8.1.1:CubeMX 工程生成界面

8.1.2 拷贝 HAL 库源码

  1. 复制 Drivers/STM32F4xx_HAL_Driver/IncSrc 到工程;
  2. 复制 Drivers/CMSIS 到工程;
  3. Templates/Src/main.c Templates/Inc/main.h 替换掉。

8.1.3 MDK 配置

C/C++ → Define:USE_HAL_DRIVER,STM32F407xx C/C++ → Include Paths:加 Drivers/STM32F4xx_HAL_Driver/IncDrivers/STM32F4xx_HAL_Driver/Inc/LegacyDrivers/CMSIS/Device/ST/STM32F4xx/IncludeDrivers/CMSIS/Include、Src、Inc。 Output → Create HEX File 勾选。 Debug → CMSIS-DAP。

8.1.4 模板工程补全

main.c 模板里加:

#include "led.h"
#include "delay.h"

int main(void) {
    HAL_Init();
    SystemClock_Config();          // CubeMX 生成
    delay_init(168);
    led_init();
    while (1) {
        LED0_TOGGLE();
        delay_ms(500);
        LED1_TOGGLE();
        delay_ms(500);
    }
}

原书图 8.1.4.1:模板工程目录结构
原书图 8.1.4.1:模板工程目录结构

8.2 下载验证

F7 编译 → 0 Error → F8 烧录 → 板子 LED 闪烁说明工程跑通。

保存这个 Template 工程,每次新项目都从它复制,省下 30 分钟工程配置。

原书图 8.2.1:编译与烧录成功界面
原书图 8.2.1:编译与烧录成功界面

🧠 小测验
CubeMX 生成的工程怎么编译?
用 MDK 打开 .uvprojx 直接编译即可。
HAL 库工程 Define 写什么?
USE_HAL_DRIVER,STM32F407xx
工程模板里必备的三个初始化函数是?
HAL_Init()SystemClock_Config()、外设初始化函数。
← 上一篇🏠 顶层目录下一篇 →