这一章在干嘛? 手工建一个寄存器版本工程,从新建文件夹、拷贝启动文件、添加源码到魔术棒配置、生成 HEX 文件并下载验证。理解完这章,你就能看懂 HAL 库为什么这么封装。
6.1 新建寄存器版本 MDK 工程
6.1.1 新建工程文件夹
标准工程结构:
Project/
├── Doc/ # 文档、说明
├── Libraries/ # CMSIS / FWLib 等
│ ├── CMSIS/
│ └── STM32F4xx_StdPeriph_Driver/
├── Project/ # MDK 工程文件
├── User/ # 用户代码(main.c 等)
└── startup/ # 启动文件 + 系统文件
6.1.2 新建一个工程框架
- 打开 MDK → Project → New uVision Project → 选芯片 STM32F407IG;
- Manage Run-Time Environment 中先「Cancel」(我们手动加);
- 工程结构按上面目录建好。
6.1.3 添加文件
设置工程名和分组名:双击 Project 窗口的 Group 新建分组 CMSIS/Startup/User/Lib。
添加启动文件:startup_stm32f407xx.s 加入 Startup 分组。
添加 SYSTEM 源码:把正点原子的 delay/sys/usart 加入 User 分组。
6.1.4 魔术棒设置
Target →
- ARM Compiler:选 V5 或 V6;
- Use MicroLIB:勾选(printf 重定向必备);
- IRQ 中断向量表:Startup 分组的 startup 文件里。
Output →
- Select Folder for Objects:选
Project/Objects/ - Create HEX File:勾选
- Name of Executable:
Project.hex
C51 / Listing → 默认即可。
C/C++ →
- Include Paths:加 CMSIS 头、Libraries 头、User 头;
- Define:
USE_HAL_DRIVER, STM32F407xx(HAL 用)或 STM32F40_41xxx(标准库用); - Optimization:调试选 Level 0,发布选 Level 2/3。
Asm → 默认。
Debug → 选 CMSIS-DAP,前面章节讲过。
Utilities → 选 CMSIS-DAP,配置 Flash 算法(STM32F4xx Flash 1MB)。
原书图 6.1.4.1:魔术棒 C/C++ 选项卡
6.2 下载验证
按 F7 编译 → 0 Error 0 Warning → F8 烧录 → 看开发板 LED 灯闪说明整个工程链路通了。
工程跑通后建议立刻备份一份「模板工程」,以后每次新工程基于模板复制,效率翻倍。
原书图 6.2.1:编译通过与烧录成功界面
🧠 小测验寄存器版本工程包含哪些分组?
CMSIS、Startup、User、Libraries 等。
魔术棒 C/C++ 的 Define 写什么?
HAL 库版 USE_HAL_DRIVER,STM32F407xx;标准库版 STM32F40_41xxx。
Output 必须勾选什么?
Create HEX File 才能生成可烧录的 hex 文件。