洛阳网站建设辽宁省城乡建设网站
2026/2/21 14:37:45 网站建设 项目流程
洛阳网站建设,辽宁省城乡建设网站,用html5设计个人网站,天津市做网站的公司手把手教你用Keil5烧录STM32F103#xff1a;从零开始的实战入门你是不是也经历过这样的时刻#xff1f;买了一块“蓝丸”开发板#xff0c;装好了Keil#xff0c;写完代码点击下载——结果弹出一堆错误#xff1a;“No target connected”、“Cannot access target”……一…手把手教你用Keil5烧录STM32F103从零开始的实战入门你是不是也经历过这样的时刻买了一块“蓝丸”开发板装好了Keil写完代码点击下载——结果弹出一堆错误“No target connected”、“Cannot access target”……一头雾水不知道问题出在哪。别急。每一个STM32开发者都曾从这一步起步。程序烧录是连接代码与硬件的第一座桥梁。今天我们就抛开复杂术语和官方文档的晦涩表达用最贴近实战的方式带你一步步搞定Keil5 ST-Link 烧录 STM32F103的全过程。为什么选STM32F103和Keil5在嵌入式世界里STM32就像单片机界的“Linux”。而其中的STM32F103C8T6俗称“蓝丸”堪称入门者的“第一课老师”。它便宜十几块钱就能买到最小系统板、资料多、生态成熟更重要的是——支持Keil、支持ST-Link调试方便。配合Keil MDKuVision5这个老牌IDE构成了无数工程师职业生涯的第一个“Hello World”——点亮LED。但别小看这个过程。哪怕只是把一段简单的GPIO初始化代码下载进芯片背后其实涉及了编译、链接、调试协议、Flash编程算法等一整套机制。接下来我们不讲大道理只讲你能动手操作的细节。第一步环境搭建——软件准备不能少1. 安装Keil MDK-ARM推荐v5.37去Arm官网或国内镜像站下载Keil MDK-ARM不是C51版本。安装时建议路径不要带中文和空格比如D:\Keil_v5\安装完成后打开你会看到熟悉的uVision界面。⚠️ 注意免费版有32KB代码大小限制。如果你的项目超过这个大小会提示“Example restricted in code size”需要注册或购买授权。不过对于初学者点灯、读按键完全够用。2. 安装STM32F1系列支持包Device Family Pack这是关键一步没有这个包Keil就不认识STM32F103。打开Keil →Pack Installer右上角图标→ 搜索 “STM32F1” → 找到STM32F1xx_DFP包 → 安装最新版。✅ 安装成功后在新建工程选择芯片时就能看到STM32F103C8之类的型号了。3. 安装ST-Link驱动虽然现在很多系统可以即插即用但为了稳定建议手动安装官方驱动。前往ST官网搜索STSW-LINK009下载并安装USB驱动。插入ST-Link后设备管理器中应出现类似STMicroelectronics STLink Virtual COM Port (COMx) STLink USB Driver如果没有可能是驱动未正确安装或者使用的是山寨ST-Link常见问题来源之一。第二步创建你的第一个工程让我们以最常见的STM32F103C8T6为例。1. 新建工程打开Keil → Project → New uVision Project路径不要有中文输入工程名如LED_Blink选择目标芯片STM32F103C8注意不是C6或C4Keil会自动提示是否添加启动文件点“是”。2. 添加必要文件你需要至少两个文件- 启动文件startup_stm32f103xb.s已自动添加- 系统初始化文件system_stm32f1xx.c后者可以在Keil安装目录下的\ARM\PACK\...\Device\Source\Templates\system_stm32f1xx.c找到复制到工程文件夹并在Keil中右键“Add Existing Files”。3. 编写主函数新建一个main.c文件内容如下简化版GPIO控制#include stm32f1xx.h void delay(volatile uint32_t count) { while(count--); } int main(void) { // 开启GPIOA时钟 RCC-APB2ENR | RCC_APB2ENR_IOPAEN; // PA1配置为推挽输出最大速度10MHz GPIOA-CRL ~GPIO_CRL_MODE1; GPIOA-CRL | GPIO_CRL_MODE1_0; // 10MHz GPIOA-CRL ~GPIO_CRL_CNF1; // 推挽输出 while(1) { GPIOA-BSRR GPIO_BSRR_BR1; // PA1拉低假设LED共阳 delay(0xFFFFF); GPIOA-BSRR GPIO_BSRR_BS1; // PA1拉高 delay(0xFFFFF); } } 提示这段代码直接操作寄存器适合理解底层原理。后续可用HAL库或STM32CubeMX生成更规范的代码。4. 编译工程点击工具栏的“Build”按钮锤子图标。如果一切正常底部会显示.\Objects\LED_Blink.axf - 0 Error(s), 0 Warning(s).说明.axf可执行文件已经生成接下来就可以下载了。第三步连接硬件准备烧录现在进入最关键的环节把代码“灌”进STM32芯片。你需要这些硬件STM32F103C8T6最小系统板“蓝丸”ST-Link V2调试器原装或兼容杜邦线若干USB线给ST-Link供电正确接线方式SWD模式ST-LinkSTM32F103C8T6SWCLKPA14 (JTCK)SWDIOPA13 (JTMS)GNDGND3.3V3.3V可选用于给目标板供电重点提醒- 不要接错SWCLK和SWDIO否则无法识别目标。- GND必须共地这是最容易被忽视的问题。- 如果你的“蓝丸”板自带3.3V稳压建议由ST-Link提供电源接3.3V避免双电源冲突。配置Keil中的下载选项进入Project → Options for Target → Debug选择左侧 “ST-Link Debugger”点击右侧 “Settings”在新窗口中- 切换到Debug标签页确认是否识别到设备Serial No. 显示出来- 切换到Flash Download标签页- ✅ 勾选 “Download to Flash”- 点击 “Add” → 选择STM32F1xx Medium Density Flash因为C8T6是128KB Flash- 地址范围自动填充为0x08000000 - 0x0801FFFF❗ 错误示范若误选 High Density 或 Low Density会导致烧录失败甚至越界写入第四步点击下载见证奇迹回到主界面点击工具栏上的“Load”按钮向下箭头图标。此时观察输出窗口Connecting... Erase Done. Programming Done. Verify OK.恭喜你的程序已经成功写入STM32的Flash中。按下复位按钮或者断电再上电你应该能看到连接在PA1上的LED开始闪烁。 成功迈出第一步常见问题排查手册新手必看别以为一次就能成功。下面这些问题我当年也都踩过坑。现象可能原因解决方案No target connected接线松动、反接、虚焊检查SWCLK/SWDIO是否接对重新插拔Cannot access target驱动未安装 / 下载器损坏重装ST-Link驱动换一台电脑测试Target not respondingBOOT0引脚悬空或拉高确保BOOT0接地GNDFlash programming failedFlash算法选错改为Medium Density对应128KBMCU locked / Protected触发了读保护使用ST-Link Utility解除保护下载成功但不运行主频配置错误 / 时钟未启用检查SystemInit()是否调用或改用默认设置特别注意BOOT引脚状态STM32有三种启动方式由BOOT0和BOOT1控制BOOT0BOOT1启动区域0X主Flash正常运行✅10系统存储器ISP烧录11SRAM所以平时运行程序时BOOT0一定要接地有些“蓝丸”板子BOOT0默认通过电阻下拉到GND没问题但也有一些是悬空的容易受干扰导致无法启动。 建议焊接一个10kΩ电阻将BOOT0下拉到GND确保稳定性。进阶技巧让开发效率翻倍当你已经能熟练烧录程序不妨试试这些实用技巧1. 启用“Update Target before Debugging”在Options → Debug → Settings → Flash Download中勾选此项。作用每次进入调试模式前自动重新编译并下载最新代码避免运行旧版本。2. 使用Nucleo开发板自带ST-Link像Nucleo-F103RB这类开发板本身就集成了ST-Link电路。你可以剪断跳线把它的ST-Link拿出来“共享”给其他目标板使用省去买额外探针的钱。3. 学会看.map文件分析内存占用编译后生成的.map文件能告诉你代码占了多少Flash、变量用了多少RAM。对优化资源很有帮助。写在最后烧录不是终点而是起点也许你现在觉得“不就是点个按钮吗” 但当你第一次亲手把代码变成硬件动作时那种成就感是无可替代的。掌握Keil5烧录STM32F103的能力意味着你已经- 理解了从C代码到机器指令的转换流程- 熟悉了SWD调试接口的工作机制- 具备了基本的软硬件联调能力而这正是所有高级功能的基础——无论是FreeRTOS多任务调度、USART串口通信还是I2C驱动OLED屏幕都建立在这个稳定的“烧录—运行—调试”循环之上。下一步做什么动手实践是最好的老师。建议你尝试以下项目巩固技能1. 实现按键控制LED开关加入中断2. 用定时器精确控制闪烁频率3. 通过串口打印调试信息USART printf重定向4. 尝试用STM32CubeMX生成工程对比差异如果你在过程中遇到任何问题欢迎留言交流。毕竟每个老手都曾是个连ST-Link都认不出的新手。一起加油吧未来的嵌入式工程师

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询