把练习代码导出成个人 Keil 工程
你可以先在网页里选择 GPIO 或 PWM 练习,再把当前草稿原样带进一个可打开的 Keil 工程。导出只是学习代码的封装:它不会替你改错、不会替你下载程序,也不会证明真实硬件已经工作。
先从哪一节练习开始
深链接会直接打开对应课程和场景;你也可以从练习页选择。
三个东西不要混淆
| 名称 | 里面有什么 | 用途 |
|---|---|---|
| 学习包 | exercise.c、教学头文件/profile、网页 evidence | 在浏览器学习和观察 |
| Keil 包 | 个人工程 ZIP,含固定模板、CMSIS/SPL、启动与时钟等支撑文件 | 解压后用本机 Keil 编译 |
| 参考工程 | 下载页与当前课程同步的完整 Keil5 项目 | 打开 Project.uvprojx;01_Minimal 为最小实验,02_Course 为整机;main 解释见 README |
六节基础课与其余知识点采用相同工程分组。打开 User/main.c,顶部是你的完整练习代码,下方 main() 调用 exercise() 一次后空循环。其他库文件保持原样。
固定硬件合同:先读完,再决定是否接线
参考板与时钟
目标是常见 STM32F103C8T6 / Blue Pill 参考板,不代表任意 F103 板。芯片容量为 64 KiB Flash、20 KiB RAM;8 MHz 外部晶振 → 72 MHz SYSCLK/HCLK;APB1 为 36 MHz,但定时器倍频后 TIM2 输入时钟为 72 MHz;APB2 为 72 MHz。
GPIO:PB12 外接红色 LED 与 1 kΩ
PB12 是本课外接 LED 的教学引脚,不是 Blue Pill 的 PC13 板载 LED。请不要把 PC13 板载灯的经验套到本课。
| 场景 | 接线(LED 阳极 A、阴极 K) | 点亮电平 |
|---|---|---|
| core / fault(低有效) | 3.3V → 1kΩ → LED A → LED K → PB12 | PB12 = 0 |
| variant(高有效) | PB12 → 1kΩ → LED A → LED K → GND | PB12 = 1 |
PWM:PA0 / TIM2_CH1 外接 LED
PA0/TIM2_CH1 → 1kΩ → LED A → LED K → GND。core/fault 目标为 1 kHz、25%;variant 目标为 2 kHz、25%。上面两种 GPIO 回路的极性不能混用。
六步导出与打开
- 选择课程和场景在练习页选择 GPIO/PWM,并在代码区编辑当前草稿。
- 先在网页运行点击“编译并运行”查看教学行为;这一步不调用 ARM 工具链。
- 导出点击代码区主按钮“导出 Keil5 练习工程”。ZIP 已含 Project.uvprojx、启动文件、库和你的当前代码;下方“备份网页源码(非 Keil 工程)”仅供备份。
- 解压到短英文目录例如
D:\STM32Practice\gpio-core。不要直接在 ZIP 压缩包内打开。 - 打开工程双击解压目录中的
Project.uvprojx,确认工程文件和 User 文件均来自同一目录。 - 构建在 Keil 使用 Build(F7)或 Rebuild。不要点击 Download;本指南不执行烧录。
Keil 环境与常见报错
本工程固定针对 ARM Compiler 5。当前本机已检测到 MDK 5.24、ARM Compiler 5.06 update 5(build 528)、Keil STM32F1xx_DFP 2.2.0;检测到版本不等于本次工程已构建通过。
- 如果工具链不对,打开 Options for Target → Target → ARM Compiler,选择 5。
- 如果本机没有 ARM Compiler 5,请从 Keil 官方主页或 Arm 官方途径安装合法工具。
- 不承诺 AC6 或其他版本兼容;工程不捆绑编译器、许可证,不介绍盗版或破解。
User/main.c 行号,再修改自己的练习代码。Keil 中的修改不会自动回写网站;网站草稿也不会因导出而清空。怎样理解结果
| 结果 | 能说明什么 | 不能说明什么 |
|---|---|---|
| 浏览器 pass | 当前教学模型观察符合场景目标 | 不是 Keil 编译 pass,也不是实物通过 |
| Keil Build 通过 | 本机 ARM 工具链完成了工程构建 | 不代表行为正确或 LED 实物会亮 |
| 实物验证 | 在正确板型、断电检查和安全接线后得到的独立结果 | 本轮没有这项证据 |
exercise.json 保存当前草稿、场景和网页检查记录;HARDWARE.md 说明本题接线。build-status.json 默认为 not-run,执行 Build 不会自动回写这个 JSON;构建后以 Keil 日志和新生成的 .axf / .hex 为准。六节基础课均附完整标准库;网页运行仍只支持课程声明的教学 API。