课时00 嵌入式技术应用设计实训 | 开发环境搭建与开发板认识

嵌入式技术应用设计实训 | 开发环境搭建与开发板认识

本课程开源地址(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 的供电口、下载口与复位键,再打开仓库里的跑马灯实验案例,跑通"编译 → 下载 → 复位看现象"整条链路,为后面每一课打好底座。

本节目标

  1. 能装齐本课程要用的四样工具:Keil MDK5 + STM32F1 器件包、ST-Link 驱动、VS Code、Git,并说清每样干什么用
  2. 能说出 STM32F103 Nano(V1.3)板上的供电口、下载口分别是哪个,复位键在哪
  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 驱动装好再插,最省事

操作步骤:

  1. 装 Keil MDK5,打开 Pack Installer 装 Keil.STM32F1xx_DFP 器件包(不装这个,Keil 里根本找不到 STM32F103 )

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

    注意务必看到上述成功的截图,否则说明驱动装错了,会导致程序无法下载

  3. 装 VS Code 和 Git,克隆课程仓库:git clone https://gitee.com/fujianxinxi/qianrushishixundianzi.git

  4. 用 Keil 打开 课时文档/代码/课时00-环境搭建与开发板认识/跑马灯实验/USER/LED.uvprojx

  5. Options for Target → Debug 里选好 ST-Link Debugger,回主界面点 Build

  6. 点 Download 下载,下载完按一下板子复位键

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2 观察到的现象

  1. Keil 的 Build Output 显示 0 Error(s), 0 Warning(s);Download 后提示 Programming Done. Verify OK.
  2. 设备管理器里能看到 ST-Link(在"通用串行总线设备"下或厂商名下),说明驱动装对了
  3. 按复位键后,板上的 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 结果 能看到仓库目录已下载到本地

截图统一放在仓库根目录的 截图/ (正文里用相对路径 ../../截图/... 引用),命名与上表一致;补图后把正文里每处"(截图待补)"删掉即可。

相关文档

相关推荐
阿钱真强道4 小时前
课时01 嵌入式技术应用设计实训 | GPIO 输出:跑马灯与蜂鸣器
hal库·keil·gpio·蜂鸣器·跑马灯·推挽输出·stm32f103
潘潘的嵌入式日记1 天前
Keil 的三个 Go To:跳不动先查 Browse Information
调试技巧·keil·mdk·代码导航·browse information
老李IT笔记1 天前
激活锁状态怎么检测:三个入口,四种返回值,一份排查顺序
git·智能手机·github
Joecien1 天前
【2026实测】百炼 CLI 托管 Agent 教程:bl managed-agent 配置校验、版本回滚与变更预演(附完整命令)
人工智能·git·阿里云·知识图谱·agi
漂着的圆木1 天前
模型:VS Code启用HydraFusion编排器配置与限制
vs code·github copilot·hydrafusion·运行时模型编排器·配置排查
行者-全栈开发1 天前
【码动四季·秋】从 commit 到发版全自动:Conventional Commits + semantic-release 发布流水线实战
git·ci/cd·自动化发布·atomgit·semantic-releas·语义化版本自动化·git 提交规范落地
Flynt2 天前
Claude Code 103 秒删掉 4.8 万个文件之后,我把自己的仓库"删"了一遍:git 能救的比你想的少
git·ai编程·claude
csdn2015_2 天前
git 可以修改已经push上去的commit说明吗
git