STM32F103通过Keil5烧录程序的全面讲解

STM32F103烧录全攻略:从零开始用Keil5部署你的第一段代码

你有没有过这样的经历?
电路板焊好了,ST-Link插上了,Keil也打开了——结果一点击“下载”,弹窗却冷冰冰地告诉你:“No target connected”。
那一刻,是不是觉得硬件、软件、玄学都站在了你对立面?

别急。今天我们就来彻底拆解STM32F103通过Keil5烧录程序的全过程,不讲空话,只说实战中真正有用的细节。无论你是刚入门的新手,还是被某个奇怪问题卡住的老手,这篇文章都会帮你打通“写代码 → 下载 → 运行”这条关键链路。


为什么是 Keil5 + STM32F103?

在嵌入式开发的世界里,STM32F103几乎是绕不开的一个型号。它基于ARM Cortex-M3内核,主频72MHz,Flash从64KB到512KB不等,价格便宜、资料丰富,被戏称为“国产芯片杀手”。

而Keil MDK(即Keil5),作为ARM官方推荐的开发环境之一,凭借其成熟稳定的编译器和调试系统,在工业控制、汽车电子等领域仍占据主导地位。

虽然现在有STM32CubeIDE、VSCode+PlatformIO等更现代的选择,但很多企业项目依然沿用Keil,原因很简单:
✅ 稳定性高
✅ 调试体验好
✅ 对老旧项目的兼容性强

所以,掌握“Keil5烧录STM32”这项技能,并不是复古,而是为了能看懂别人的工程、接手老项目、甚至量产烧录时不出错


烧录的本质是什么?

很多人以为“烧录”就是把.hex.axf文件拷贝进芯片,其实不然。

真正的烧录是一个四步闭环过程

  1. 连接:PC通过ST-Link与目标芯片建立物理通信;
  2. 识别:读取芯片ID,确认型号匹配;
  3. 擦除 → 写入 → 校验:将程序数据写入Flash,并逐字节比对;
  4. 运行:跳转到复位向量,启动用户程序。

这其中任何一个环节出问题,都会导致失败。下面我们一步步来看怎么确保每一步都能走通。


第一步:搭建开发环境

必备工具清单

组件推荐配置
开发主机Windows 10/11(64位)
IDEKeil MDK v5.38 或以上版本
下载器ST-Link/V2 或 Nucleo 板载调试器
目标板STM32F103C8T6最小系统板(蓝 pill)或其他F103系列
连接线2.54mm排针+杜邦线 或 SWD专用下载线

⚠️ 注意:不要使用劣质USB线!很多“无法连接”问题其实是供电不足造成的。

安装Keil与器件支持包

  1. 安装Keil MDK后,打开μVision5;
  2. 点击Project → Manage → Pack Installer
  3. 搜索并安装:
    -Keil::STM32F1xx_DFP(设备固件包)
    -ARM::CMSIS(核心外设库)

安装完成后,新建工程时就能看到STM32F103系列选项了。


第二步:创建一个可烧录的工程

我们以最常见的STM32F103C8T6(64KB Flash)为例。

新建工程流程

  1. Project → New uVision Project
  2. 选择芯片型号:STMicroelectronics → STM32F103C8
  3. Keil会自动添加启动文件startup_stm32f10x_md.s(注意:MD = Medium Density)

🔍 小知识:F103根据Flash大小分为不同密度类型:
- LD: ≤32KB
- MD: 32~128KB → C8属于此类
- HD: >128KB → 如VE、ZE等

选错密度会导致Flash算法不匹配,后续烧录失败!

添加主程序代码(点亮LED)

#include "stm32f10x.h" int main(void) { // 初始化系统时钟(默认为内部HSI,建议外部晶振) SystemInit(); // 使能GPIOC时钟(APB2总线) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 配置PC13为推挽输出 GPIO_InitTypeDef gpio; GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_13; gpio.GPIO_Mode = GPIO_Mode_Out_PP; gpio.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &gpio); while (1) { GPIO_SetBits(GPIOC, GPIO_Pin_13); // LED灭(共阳) for(volatile int i = 0; i < 1000000; i++); GPIO_ResetBits(GPIOC, GPIO_Pin_13); // LED亮 for(volatile int i = 0; i < 1000000; i++); } }

📌关键点说明
-SystemInit()是标准库自带函数,初始化时钟至72MHz(需外部8MHz晶振);
- PC13通常接板载LED,低电平点亮;
- 使用volatile防止循环被编译器优化掉。


第三步:配置下载器与Flash算法

这是最容易出错的地方!

设置调试器

进入Project → Options for Target → Debug标签页:
- 选择ST-Link Debugger
- 点击右侧Settings

在新窗口中:
- 切换到Debug选项卡:
- Interface:SWD
- Clock:1 MHz(初次连接建议设低,避免不稳定)
- 切换到Flash Download选项卡:
- ✅ 勾选 “Program”
- ✅ 勾选 “Verify”
- ❌ 不要勾选 “Reset and Run”(除非确定没问题)

加载正确的Flash算法

点击Add按钮,选择适合你芯片的算法:

芯片型号推荐算法文件
STM32F103C8 (64KB)STM32F1xx Medium-density Flash
STM32F103ZE (512KB)STM32F1xx High-density Flash

路径一般为:
C:\Keil_v5\ARM\FLASH\STM32F1xx_Med-density_Flash.pdsc

💡 如果没加载算法,会出现经典错误:“Flash Algorithm download failed


第四步:正确连接硬件

ST-Link与STM32F103接线表

ST-Link引脚STM32F103引脚功能说明
SWCLKPA14时钟线
SWDIOPA13数据线
GNDGND公共地
3.3V3.3V(可选)供电或电平参考

✅ 正确做法:优先让目标板自己供电,ST-Link只用于调试(不供VCC)
❌ 错误做法:两边同时供电,可能造成电源冲突!

BOOT模式必须正确!

STM32有三种启动方式,由BOOT0和BOOT1引脚决定:

BOOT0BOOT1启动区域
0X主闪存(正常运行)✅
10系统存储器(ISP升级)
11内部SRAM

👉烧录和运行时,BOOT0必须接地(拉低)!
否则芯片不会从Flash启动,即使程序烧进去了也不会执行。


第五步:执行烧录并验证结果

一切就绪后,按下快捷键F8(Load),观察输出窗口日志:

Connecting to target... Target connected. Erase Done. Programming... Verification... OK Download completed successfully.

🎉 成功标志:看到最后一行“Download completed successfully.”,并且板载LED开始闪烁!

如果失败,常见提示及应对如下:

错误信息可能原因解决方案
No target connected接线错误 / 未上电 / SWD接触不良检查GND是否共地,测量PA13/PA14电压
Cannot access targetBOOT0=1 或 复位脚悬空确保BOOT0接地,NRST接10kΩ上拉
Flash algorithm failed算法未加载 / 芯片型号选错重新选择正确密度的Flash算法
Programming failed at 0x08000000写保护开启在Options → Debug中取消勾选“Enable Code Readout Protection”

高级技巧与避坑指南

1. 如何判断当前连接的是哪颗芯片?

在Keil的调试模式下,执行以下命令查看芯片ID:

> mon vendorid > mon deviceinfo

或者直接看输出栏中的:

Device ID: 0x416 (STM32F103xx)

不同封装和密度的F103,ID略有差异,可用于精准识别。

2. 批量烧录怎么做?

对于小批量生产,可以使用ST-Link Utility工具导出批处理脚本:

st-link_cli.exe -c SWD -P firmware.bin 0x08000000 -V -Q

配合自动化测试平台,实现一键刷机。

3. 烧录成功但不运行?检查这些地方!

  • 是否开启了独立看门狗(IWDG)且未喂狗?
  • SystemInit()是否成功配置了外部晶振?
  • 中断向量表偏移是否正确?(尤其使用Bootloader时)

建议首次运行时先单步调试,进入main函数后再全速运行。


最佳实践总结

类别推荐做法
硬件设计PCB预留SWD接口测试点;BOOT0通过0Ω电阻接地
软件配置使用标准外设库或HAL库;统一命名规范
烧录流程固化操作SOP;记录版本号与烧录时间
防呆机制外扩SPI Flash保存校准参数,避免被覆盖
安全策略出厂前关闭读保护,防止锁死芯片

写在最后

烧录看似只是“点一下按钮”的小事,但它背后涉及软硬件协同、协议通信、存储管理等多个层面的知识。一旦掌握,你会发现:

  • 再也不怕别人说“程序下不进去”;
  • 能快速定位是代码问题还是硬件问题;
  • 在团队中成为那个“搞定下载器”的人。

而这,正是嵌入式工程师成长的第一步。

下次当你再次面对那根小小的四线SWD接口,请记住:它不只是几根导线,而是你通往芯片世界的大门。

现在,去点亮你的第一个LED吧。💡

如果你在实际操作中遇到具体问题,欢迎留言交流。我们可以一起分析log、查接线、调设置——毕竟,每个成功的烧录背后,都曾有过无数次失败的尝试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1122262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue Admin Template:轻量级后台管理系统开发指南

Vue Admin Template&#xff1a;轻量级后台管理系统开发指南 【免费下载链接】vue-admin-template Vue 轻量级后台管理系统基础模板 项目地址: https://gitcode.com/gh_mirrors/vue/vue-admin-template 在当今快速发展的前端开发领域&#xff0c;拥有一个高质量的模板能…

5分钟快速上手:免费神经网络绘图工具NN-SVG完整教程

5分钟快速上手&#xff1a;免费神经网络绘图工具NN-SVG完整教程 【免费下载链接】NN-SVG NN-SVG: 是一个工具&#xff0c;用于创建神经网络架构的图形表示&#xff0c;可以参数化地生成图形&#xff0c;并将其导出为SVG文件。 项目地址: https://gitcode.com/gh_mirrors/nn/N…

esp32引脚功能全解析:系统学习必备指南

ESP32引脚全攻略&#xff1a;从踩坑到精通的实战指南你有没有遇到过这样的情况&#xff1f;代码烧录进去&#xff0c;板子却毫无反应&#xff1b;ADC读数飘忽不定&#xff0c;像在跳华尔兹&#xff1b;设备隔几分钟就莫名其妙重启……别急&#xff0c;这些问题很可能不是你的代…

为什么说Qwen3Guard-Gen-8B是大模型时代的内容安全基石?

Qwen3Guard-Gen-8B&#xff1a;大模型时代内容安全的语义防线 在生成式AI席卷各行各业的今天&#xff0c;一个看似简单的问题正变得愈发棘手&#xff1a;我们如何确保模型输出的内容是安全、合规且负责任的&#xff1f; 智能客服突然冒出一句不当隐喻&#xff0c;创作助手无意中…

上市公司公告AI生成需经Qwen3Guard-Gen-8B合规审查

上市公司公告AI生成需经Qwen3Guard-Gen-8B合规审查 在金融信息高度敏感的今天&#xff0c;上市公司每一次公告发布都牵动市场神经。一个措辞不当的“增长强劲”&#xff0c;可能掩盖业绩下滑的事实&#xff1b;一句模糊表述的“前景乐观”&#xff0c;也可能被解读为误导性陈述…

绝区零自动化脚本终极解决方案:高效解放双手的完整指南

绝区零自动化脚本终极解决方案&#xff1a;高效解放双手的完整指南 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 在当今快…

DesktopNaotu思维导图工具本地化部署与使用指南

DesktopNaotu思维导图工具本地化部署与使用指南 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版&#xff0c;思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址: https://gitcode.com/gh_mirrors/de/DesktopNa…

OBS-RTSPServer插件终极配置指南:从零搭建专业视频流服务

OBS-RTSPServer插件终极配置指南&#xff1a;从零搭建专业视频流服务 【免费下载链接】obs-rtspserver RTSP server plugin for obs-studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-rtspserver 想要在OBS Studio中快速搭建RTSP视频流服务器吗&#xff1f;OBS-…

WinDbg Preview下载与配置:驱动调试环境搭建手把手教程

从零搭建Windows驱动调试环境&#xff1a;WinDbg Preview实战指南 你有没有遇到过这样的场景&#xff1f;刚写完一个内核驱动&#xff0c;满怀期待地部署到测试机上&#xff0c;结果系统一启动就蓝屏&#xff0c;错误代码一闪而过&#xff0c;事件查看器里啥也没留下。你想查问…

5步实现OBS-RTSPServer流媒体直播:从零搭建专业视频流平台

5步实现OBS-RTSPServer流媒体直播&#xff1a;从零搭建专业视频流平台 【免费下载链接】obs-rtspserver RTSP server plugin for obs-studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-rtspserver 在当今数字化时代&#xff0c;实时视频流传输已成为内容创作、远…

BetterNCM安装器使用全攻略:从入门到精通

BetterNCM安装器使用全攻略&#xff1a;从入门到精通 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件管理而头疼吗&#xff1f;这款基于Rust开发的BetterNCM安装器…

城通网盘直连下载完整教程:轻松突破下载限制的实用方案

城通网盘直连下载完整教程&#xff1a;轻松突破下载限制的实用方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘下载速度缓慢而困扰吗&#xff1f;每天都有大量用户面临下载进度条停滞…

Qwen3Guard-Gen-8B英文审核能力评测:对比Perspective API优劣分析

Qwen3Guard-Gen-8B英文审核能力评测&#xff1a;对比Perspective API优劣分析 在生成式AI加速渗透社交平台、智能客服和内容创作的今天&#xff0c;一个日益严峻的问题浮出水面&#xff1a;模型是否会无意中输出仇恨言论、偏见表达或看似合理实则误导的信息&#xff1f;这类“软…

BetterNCM安装器深度评测:让网易云音乐插件管理更专业

BetterNCM安装器深度评测&#xff1a;让网易云音乐插件管理更专业 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 如果你正在寻找一款能够彻底改变网易云音乐插件管理体验的工具&#…

AI-Shoujo HF Patch 完整安装配置教程:解锁游戏全部功能

AI-Shoujo HF Patch 完整安装配置教程&#xff1a;解锁游戏全部功能 【免费下载链接】AI-HF_Patch Automatically translate, uncensor and update AI-Shoujo! 项目地址: https://gitcode.com/gh_mirrors/ai/AI-HF_Patch AI-Shoujo HF Patch 是一款专为 AI-Shoujo 游戏设…

VMware Workstation Pro 17许可证密钥终极获取指南:1000+免费密钥全解析

VMware Workstation Pro 17许可证密钥终极获取指南&#xff1a;1000免费密钥全解析 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all major vers…

51单片机流水灯代码Keil工程模板搭建操作指南

从零搭建51单片机流水灯工程&#xff1a;Keil环境配置与实战编码全解析你有没有过这样的经历&#xff1f;手头一块STC89C52开发板&#xff0c;电脑装好了Keil&#xff0c;却卡在“第一步”——新建工程之后&#xff0c;不知道怎么加文件、设芯片型号、生成HEX……最后只能照搬别…

AI游戏补丁完全指南:解锁沉浸式体验的终极秘籍

AI游戏补丁完全指南&#xff1a;解锁沉浸式体验的终极秘籍 【免费下载链接】AI-HF_Patch Automatically translate, uncensor and update AI-Shoujo! 项目地址: https://gitcode.com/gh_mirrors/ai/AI-HF_Patch AI游戏补丁是提升游戏体验的强力工具&#xff0c;特别是AI…

QQ空间数据备份全攻略:3步永久保存你的青春回忆

QQ空间数据备份全攻略&#xff1a;3步永久保存你的青春回忆 【免费下载链接】QZoneExport QQ空间导出助手&#xff0c;用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件&#xff0c;便于迁移与保存 项目地址: https://gitco…

终极解决方案:Fix-Kindle-Ebook-Cover一键修复Kindle封面丢失问题

终极解决方案&#xff1a;Fix-Kindle-Ebook-Cover一键修复Kindle封面丢失问题 【免费下载链接】Fix-Kindle-Ebook-Cover A tool to fix damaged cover of Kindle ebook. 项目地址: https://gitcode.com/gh_mirrors/fi/Fix-Kindle-Ebook-Cover Kindle封面修复是许多电子书…