嵌入式技术应用设计实训 | 开发环境搭建与开发板认识
本课程开源地址(Gitee) :https://gitee.com/fujianxinxi/qianrushishixundianzi.git
课件、示例代码与验收脚本都在该仓库,可直接
git clone或下载 ZIP 使用。开发板资料A盘(百度网盘) :https://pan.baidu.com/s/1_EXrjRUewwmGMgcy38zEZg(提取码:
zbri)正点原子官方资料下载 :http://www.openedv.com/docs/boards/stm32/zdyz_stm32f103_nano.html
课程准备 · 2 学时 · 环境:Keil MDK5 + VS Code + 正点原子 STM32F103 Nano V1.3
一句话概述:开课第一课,不写新代码:装齐 Keil MDK5 与 STM32F1 器件包、ST-Link 驱动、VS Code、Git,认清正点原子 STM32F103 Nano V1.3 的供电口、下载口与复位键,再打开仓库里的跑马灯实验案例,跑通"编译 → 下载 → 复位看现象"整条链路,为后面每一课打好底座。
本节目标
- 能装齐本课程要用的四样工具:Keil MDK5 + STM32F1 器件包、ST-Link 驱动、VS Code、Git,并说清每样干什么用
- 能说出 STM32F103 Nano(V1.3)板上的供电口、下载口分别是哪个,复位键在哪
- 能打开
跑马灯实验案例并跑通"编译 → 下载 → 复位看现象",留下三张关键截图(编译输出、设备管理器里的 ST-Link、板子现象)
一、原理说明
STM32 的开发环境是一套工具链:Keil 负责把 C 代码编译成 STM32 能执行的机器码,ST-Link 下载器负责把机器码写进芯片 Flash,Git 负责课件与代码的版本管理。这几样缺一样,后面的实验就会卡在某一步,而且报出来的错往往像代码写错了,实际是工具没装好。所以本课不写新代码,先把工具装齐、把板子接口认熟,再打开仓库里的跑马灯实验案例,跑通"编译 → 下载 → 看现象"这条链路。
二、讲解内容
2.1 知识讲解
先说清工具链是怎么转起来的:你写的代码要通过一串工具才能跑到板子上,顺序是
text
写代码(VS Code / Keil 编辑器)
↓
编译(Keil + ARMCC 编译器)------把 C 代码变成 .hex / .axf 机器码
↓
下载(下载器 + 驱动)------把机器码写进 STM32 的 Flash
↓
运行(板子上电复位)------CPU 从 Flash 里取指令执行
↓
回传(串口)------板子把运行信息打给电脑看(课时03 起用到,本课不涉及)
四样工具各管一段,缺一段就断链:
| 工具 | 装什么 | 干什么用 | 装完怎么验证(本课验收点) |
|---|---|---|---|
| Keil MDK5 | MDK5 主程序 + Keil.STM32F1xx_DFP 器件包 |
建工程、编译、下载、调试 | Pack Installer 里能看到 STM32F1 系列;能打开跑马灯实验并编译 0 Error(s) |
| ST-Link 驱动 | ST-Link 驱动(本课程统一用 ST-Link) | 让电脑认得下载器 | 插上下载器,设备管理器里能看到 ST-Link |
| VS Code | 编辑器(可选装中文包) | 看代码、改例程、写实验记录 | 能用"打开文件夹"打开课件目录 |
| Git | Git for Windows | 拉课件、交作业、留版本 | git clone 课程仓库成功 |
再认板子 :正点原子 STM32F103 Nano(本课程以 V1.3 版 实物为准)。上课时对着板子找这四个地方:
| 位置 | 长什么样 | 干什么用 |
|---|---|---|
| 供电口 | 板上的 USB 口(或 5V 接线柱) | 给板子供电,插上电源指示灯亮 |
| 下载口 | 板上标着 SWD / JTAG 的排针 | 接下载器,把程序写进去(只需 SWDIO、SWCLK、GND 三根线) |
| 串口口 | 另一个 USB 口(板载 USB 转串口) | 本课不用;到课时03 串口通信再按那节课的说明接线、装驱动 |
| 复位键 | 标着 RST / RESET 的小按键 |
按一下程序从头跑,看现象就靠它 |
注意 :不同版本板子的丝印位置、跳线帽和排针顺序可能不一样。本课程所有接线表、引脚号都出自 V1.3 版;如果你手上的板子不是 V1.3,先按配套原理图核对接口,再照文档做。
2.2 代码示例
本课不写新代码 ,直接跑厂家写好的 跑马灯实验(能编译、能下载、能看见现象的完整工程)来验证工具链------本课要证明的不是"你会写代码",而是"你的工具链是通的"。
案例在哪(已经在仓库里,不用自己翻资料盘):
text
课时文档/代码/课时00-环境搭建与开发板认识/跑马灯实验/
├── USER/LED.uvprojx ← 用 Keil 打开这个工程
├── USER/main.c ← 主程序
├── HARDWARE/LED/ ← LED 驱动(led.c / led.h,板载 8 个 LED 在 PC0~PC7)
├── SYSTEM/ HALLIB/ CORE/ ← 时钟、延时、HAL 库、启动文件
└── OBJ/ ← 编译输出(已加入 .gitignore,不进仓库)
用 Keil 打开 USER/LED.uvprojx 即可。案例里真正干活的就是主循环那几行 ,看懂它,你就知道"能闪灯"意味着什么(下面是 USER/main.c 的原文):
c
int main(void)
{
HAL_Init(); /* 初始化 HAL 库:顺带配好 1ms 延时基准 */
Stm32_Clock_Init(RCC_PLL_MUL9); /* 设置时钟:主频 72MHz */
delay_init(72); /* 初始化延时函数 */
LED_Init(); /* 初始化 LED 引脚(PC0~PC7,推挽输出) */
while (1)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); /* LED0 亮(PC0 输出低电平) */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET); /* LED1 灭 */
delay_ms(500);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); /* LED0 灭 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET); /* LED1 亮(PC1 输出低电平) */
delay_ms(500);
}
}
这段不用你敲,也不用改;它只是告诉你:能闪灯 = 编译器、下载器、驱动、板子四样都对了 。后面每一课的代码,都是在这个骨架上换掉 while (1) 里的内容。
三、实验操作与现象
3.1 接线与操作步骤
接线表:
| 设备 | 接到哪 | 说明 |
|---|---|---|
| 开发板 USB 供电口 | 电脑 USB 口 | 给板子供电,插上后电源指示灯亮,再往下做 |
| ST-Link 下载器 | 板子 SWD 排针 | 只接三根必须的:SWDIO / SWCLK / GND;下载器上的 3.3V 可以不接(板子自己已供电) |
| ST-Link 另一端 | 电脑 USB 口 | 先把 ST-Link 驱动装好再插,最省事 |
操作步骤:
-
装 Keil MDK5,打开 Pack Installer 装
Keil.STM32F1xx_DFP器件包(不装这个,Keil 里根本找不到 STM32F103 )



-
装 ST-Link 驱动(本课程用 ST-Link),插上下载器,在设备管理器里确认能看到



注意务必看到上述成功的截图,否则说明驱动装错了,会导致程序无法下载
-
装 VS Code 和 Git,克隆课程仓库:
git clone https://gitee.com/fujianxinxi/qianrushishixundianzi.git -
用 Keil 打开
课时文档/代码/课时00-环境搭建与开发板认识/跑马灯实验/USER/LED.uvprojx
-
Options for Target → Debug里选好ST-Link Debugger,回主界面点Build
-
点
Download下载,下载完按一下板子复位键外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
3.2 观察到的现象
- Keil 的 Build Output 显示
0 Error(s), 0 Warning(s);Download后提示Programming Done. Verify OK. - 设备管理器里能看到 ST-Link(在"通用串行总线设备"下或厂商名下),说明驱动装对了
- 按复位键后,板上的 DS0 与 DS1 交替闪烁(每次 500ms,1 秒交换一次)------能闪,就说明"编译 → 下载 → 运行"整条链路通了 ,勾选了run 那个这个地方就不用按复位键了
看不到这些现象 :编译报错多半是器件包没装;下载报 No Cortex-M Device found,按下面这张表逐条查。
| 现象 | 原因 | 解决 |
|---|---|---|
| Keil 里选不到 STM32F103 | 器件包没装 | Pack Installer 装 Keil.STM32F1xx_DFP,重启 Keil |
下载报 No Cortex-M Device found |
下载器驱动没装 / SWD 三根线没接好 / 板子没供电 | 先看电源灯,再查 SWDIO、SWCLK、GND,最后重装驱动 |
| 设备管理器里看不到 ST-Link | 驱动没装 / USB 线只能充电、不带数据 | 装 ST-Link 驱动,换一根数据线 |
git clone 卡住或失败 |
网络 / 代理问题 | 先用仓库 ZIP 顶上,Git 课后再补,不影响上课 |
| 下载成功但板子没反应 | 下载后没复位 / 工程里芯片型号和实物不一致 | 按复位键;核对工程选型与板子型号 |
3.3 常用操作速查表
| 操作 | 怎么做 | 位置 / 快捷键 |
|---|---|---|
| 编译 | 点 Keil 工具栏的 Build |
F7 |
| 下载 | 点 Keil 工具栏的 Download |
F8 |
| 复位重跑 | 按板子上的 RST 键 |
板子上 |
| 换下载器 | Options for Target → Debug |
工程选项 |
| 看设备管理器 | Win + X → 设备管理器 → 通用串行总线设备 |
Windows |
| 拉最新课件 | git pull |
课件目录下 |
四、学生练习
| 编号 | 任务 | 提示 | 预期结果 |
|---|---|---|---|
| L0.1 | 装齐四样工具 | 对着 2.1 的表逐项打勾,每项都有验证点 | 四项全部通过验证 |
| L0.2 | 留下设备管理器证据 | Win + X → 设备管理器 → 通用串行总线设备 |
截图里能看到 ST-Link |
| L0.3 | 克隆课程仓库 | git clone https://gitee.com/fujianxinxi/qianrushishixundianzi.git |
本地出现 课程大纲/、课时文档/、课堂实验/ |
| L0.4 | 编译跑马灯实验 | Keil 打开 跑马灯实验/USER/LED.uvprojx → Build |
输出 0 Error(s) |
| L0.5 | 下载并看现象 | Debug 里选 ST-Link Debugger → Download → 按复位键 |
板上 DS0、DS1 交替闪烁 |
| L0.6 | 确认下载器连得上芯片 | 再点一次 Download,看有没有报错 |
不再出现 No Cortex-M Device found |
五、作业
- 必做:交"环境截图包"4 张------Keil 编译输出、设备管理器里的 ST-Link、板子现象(照片或 5 秒短视频)、
git clone后的本地目录;文件名按课时00-序号-描述.png命名 - 选做:
USER/main.c里还留了一段注释掉的"8 个 LED 流水灯"版本,把它启用(把现在这段注释掉),重新编译下载,体会"改代码 → 编译 → 下载"的完整流程,说说两种现象有什么不同 - 提交:4 张截图 + 一句话"我在哪一步卡过、怎么解决的";验收标准:三张关键截图齐全、板子现象正确(DS0、DS1 交替闪)、下载时无报错
六、本节小结与下节预告
本节把四样工具装齐(Keil + 器件包、ST-Link 驱动、VS Code、Git)、把 V1.3 板子的供电口 / 下载口 / 复位键认熟,再用 跑马灯实验 案例跑通了"编译 → 下载 → 复位看现象"整条链路------这条链路是后面每一课的地基,链路不通,写多少代码都白搭。下节进入模块一:从 GPIO 输出开始,把板载 8 个 LED(PC0~PC7)挨个点亮,写出自己的跑马灯。
附录
A. 怎么编译下载(照着做就能跑)
text
1. 接线:板子 USB 供电 → ST-Link 接 SWD 三根线(SWDIO / SWCLK / GND)→ ST-Link 插电脑
2. Keil 打开:课时文档/代码/课时00-环境搭建与开发板认识/跑马灯实验/USER/LED.uvprojx
3. 选下载器:Options for Target → Debug → 选 ST-Link Debugger → OK
4. 编译:Build(F7),确认 0 Error(s)
5. 下载:Download(F8),确认 Programming Done. Verify OK.
6. 复位:按板子 RST 键,看 DS0、DS1 交替闪
B. 本课代码
本课没有自写代码 ,跑的是正点原子官方 跑马灯实验(HAL 库版),工程放在 课时文档/代码/课时00-环境搭建与开发板认识/跑马灯实验/:
| 文件 | 作用 |
|---|---|
USER/LED.uvprojx |
Keil 工程文件(用 Keil 打开这个) |
USER/main.c |
主程序:DS0 / DS1 交替闪烁(原文见 2.2 节) |
HARDWARE/LED/led.c、led.h |
LED 驱动:把 PC0~PC7 配成推挽输出,提供 LED0~LED7 宏 |
SYSTEM/sys、SYSTEM/delay |
时钟配置与延时函数 |
HALLIB/、CORE/ |
STM32F1 HAL 库与启动文件 |
OBJ/ |
编译输出(已加入 .gitignore,不进仓库) |
C. 待补截图清单(本课 4 张)
| 文件名 | 拍什么 | 要求 |
|---|---|---|
| 课时00-01-Keil编译输出.png | Keil Build Output 窗口 | 能看清 0 Error(s), 0 Warning(s) |
| 课时00-02-设备管理器.png | 设备管理器的"通用串行总线设备"列表 | 能看清 ST-Link |
| 课时00-03-板子现象.png | 板上 DS0 / DS1 一亮一灭的画面 | 拍清板子全景,能看出哪个灯亮 |
| 课时00-04-git克隆.png | 终端 git clone 结果 |
能看到仓库目录已下载到本地 |
截图统一放在仓库根目录的 截图/ (正文里用相对路径 ../../截图/... 引用),命名与上表一致;补图后把正文里每处"(截图待补)"删掉即可。