news 2026/4/30 7:35:12

Keil4开发环境搭建:从下载到运行的完整示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Keil4开发环境搭建:从下载到运行的完整示例

从零开始搭建STM32开发环境:Keil4安装与首个工程实战

你是不是也曾在打开电脑准备写第一行嵌入式代码时,却被“找不到编译器”、“No target connected”这类错误拦在门外?别急——这几乎是每个嵌入式新手都会经历的“入门劫”。

今天我们就来干一件实在事:手把手带你用Keil uVision4(简称Keil4)完成STM32开发环境的完整搭建,并成功运行你的第一个LED闪烁程序。不讲空话,只走实路,从下载、安装、驱动配置到工程创建和烧录,全程无坑导航。


为什么还要用Keil4?它过时了吗?

虽然现在有更现代的工具如STM32CubeIDEVS Code + PlatformIO,但Keil4依然活跃在许多场景中:

  • 高校教学常用版本,教材和实验指导书大多基于Keil4;
  • 老项目维护必须兼容旧工程格式(.uvproj);
  • 启动快、资源占用少,适合低配电脑或虚拟机开发;
  • 社区资料极其丰富,百度一搜“Keil4 + STM32F1”,结果铺天盖地。

更重要的是,掌握Keil4的本质,其实是理解嵌入式开发的核心流程——无论你以后转Keil5还是GCC,这套逻辑都通用。


第一步:获取并安装Keil MDK-ARM v4

下载地址怎么找?

官方早已不再提供Keil4的公开下载链接(已被Keil5取代),但我们仍可通过合法途径获得历史版本用于学习和评估:

✅ 推荐方式:访问 Arm 官网或第三方可信技术社区(如CSDN、电子发烧友论坛等)搜索 “Keil MDK-ARM 4.74” 或 “uVision4 历史版本”。注意避免捆绑恶意软件的镜像站。

常见稳定版本推荐:
-MDK-ARM 4.74(经典版,广泛使用)
-MDK-ARM 4.50(轻量级,适合老系统)

安装过程详解

  1. 解压安装包,以管理员身份运行setup.exe
  2. 按提示完成安装路径选择(建议不要含中文或空格,例如C:\Keil\
  3. 安装过程中会自动注册部分组件,耐心等待即可
  4. 安装完成后启动 uVision4,首次运行会出现 License 输入界面

如何获取License?

免费版功能受限(最大32KB代码大小),对于STM32F103C8T6这种Flash为64KB的芯片来说不够用!

解决方法:
- 学生可申请教育用途授权(需学校邮箱);
- 工程师可通过公司购买正式License;
- 临时测试可用破解补丁(仅限个人学习,请尊重知识产权);

输入License后,在菜单栏查看:
Help → About uVision→ 显示“Product license: Unlimited”即表示激活成功。


第二步:安装ST-Link驱动,让电脑认得你的调试器

没有ST-Link,就像没有USB线的手机——插上也没法传数据。

硬件准备

你需要:
- 一块STM32最小系统板(如Blue Pill,主控STM32F103C8T6)
- 一个ST-Link V2调试器(淘宝几十元可购)
- 杜邦线若干(建议买4根带防反接杜邦线)

连接方式如下(SWD模式):

ST-Link V2STM32开发板
SWDIOPA13
SWCLKPA14
GNDGND
3.3V3.3V(可选供电)

⚠️ 注意:不要同时给开发板和ST-Link供电!优先使用开发板外部电源,避免电压冲突。

驱动安装(Windows 10/11重点说明)

  1. 插入ST-Link,设备管理器中可能出现“未知设备”或“STM32 STLink”未识别状态。
  2. 访问 ST官网驱动页面 ,下载最新版STSW-LINK009
  3. 解压后以管理员身份运行安装程序,勾选“Install USB driver”。
  4. 安装完成后重新插拔ST-Link,设备管理器应出现:
    -STMicroelectronics STLink Virtual COM Port
    -STLink Debugger

如果提示“驱动签名验证失败”,请进入高级启动模式,禁用驱动强制签名。

✅ 验证是否成功:打开Keil4 →Flash → Configure Flash Tools→ 点击“Settings”,若能识别到目标芯片ID(如0x1FFFF7E5 for F1系列),说明驱动+硬件均正常。


第三步:添加设备支持包(DFP),让Keil认识STM32

Keil4默认不包含所有MCU的支持文件,必须手动安装对应芯片的Device Family Pack (DFP)

获取DFP包的方式

方法一:在线安装(推荐)
  1. 打开Keil4 →Pack Installer图标(右上角蓝色盒子)
  2. 在左侧列表找到STMicroelectronics→ 展开STM32F1 Series
  3. 找到STM32F1xx_DFP,点击“Install”按钮
  4. 等待下载完成(约十几MB)

📌 提示:如果你看不到这个选项,可能是网络问题或版本太老。可以尝试切换代理或改用离线安装。

方法二:离线安装.pack文件
  1. 到 Keil官网 Packs 页面 搜索STM32F1xx_DFP
  2. 下载最新.pack文件(如STM32F1xx_DFP.2.3.0.pack
  3. 双击该文件,Keil会自动导入

安装成功后,新建工程时就能看到完整的STM32F1系列型号了。


第四步:创建第一个工程——点亮LED

我们以最常见的STM32F103C8T6为例,实现GPIO控制LED闪烁。

新建工程步骤

  1. Project → New μVision Project
  2. 保存路径设为英文目录(如D:\stm32_led_blink
  3. 选择芯片型号:STMicroelectronics → STM32F103C8
  4. 弹出提示框询问是否复制启动文件,点“Yes”

此时工程结构已初步建立,包含:
-Target 1:默认目标
-Source Group 1:源文件组
- 自动添加了startup_stm32f10x_md.s(中密度产品启动文件)

添加必要源文件

右键Source Group 1→ Add Existing Files:

  1. system_stm32f10x.c—— 系统时钟初始化函数所在文件(位于Keil安装目录\RTE\Device\STM32F103C8\
  2. main.c—— 用户主程序(自己创建)

💡 小技巧:可以在工程目录下新建Libraries文件夹,把标准外设库或HAL库放进去便于管理。

配置头文件路径和宏定义

Project → Options for Target → C/C++ Tab

  • Include Paths添加:
    .\RTE\_Device_\ .\Libraries\CMSIS\Device\ST\STM32F1xx\Include .\Libraries\CMSIS\Include

  • Define中添加:
    USE_STDPERIPH_DRIVER, STM32F10X_MD

🔍 解释:STM32F10X_MD表示中密度设备(Flash ≤ 128KB),否则启动文件会报错。


第五步:编写代码,让LED闪起来

假设LED连接在PC13引脚(Blue Pill板载LED正是如此),以下是精简版代码:

// main.c #include "stm32f10x.h" #include "system_stm32f10x.h" void Delay(uint32_t count) { for (volatile uint32_t i = 0; i < count; i++); } int main(void) { SystemInit(); // 初始化系统时钟(默认72MHz) // 开启GPIOC时钟 RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 配置PC13为推挽输出(最大速度10MHz) GPIOC->CRH &= ~GPIO_CRH_MODE13; GPIOC->CRH |= GPIO_CRH_MODE13_0; // 01: output mode, max 10MHz GPIOC->CRH &= ~GPIO_CRH_CNF13; // 00: general purpose push-pull while (1) { GPIOC->BSRR = GPIO_BSRR_BR13; // LED ON (PC13低电平点亮) Delay(0xFFFFF); GPIOC->BSRR = GPIO_BSRR_BS13; // LED OFF Delay(0xFFFFF); } }

📌 关键点说明:
- 使用寄存器直接操作,无需引入庞大库文件;
-SystemInit()设置了内部HSI并倍频至72MHz(具体取决于启动文件配置);
-BSRR寄存器支持原子级置位/复位,避免读-改-写风险;
- 延时函数仅为示意,实际应用应使用SysTick定时器。


第六步:编译、下载、运行!

编译设置

Options for Target → Output Tab
- 勾选Create HEX File(方便后续ISP烧录)
- Name of Executable: 可改为led_blink

Debug Tab
- Select:ST-Link Debugger
- Settings → Connect:SW, Max Clock:1.8MHz(初学者建议降低速率提高稳定性)

Utilities Tab
- 勾选Use Debug Driver
- 勾选Update Target before Download

开始下载!

点击工具栏上的“Download”按钮(向下箭头图标)

✅ 成功标志:
- 输出窗口显示:“Programming Verified”
- 板载LED开始缓慢闪烁
- 若进入调试模式(Debug → Start/Stop Debug Session),可在Watch窗口监视变量

❌ 失败怎么办?
- “No target connected”?检查ST-Link驱动、接线、目标板供电;
- “Flash Timeout”?降低SWD时钟频率,或更换Flash算法;
- 编译报错“undefined symbol”?检查头文件路径和宏定义是否正确。


常见问题避坑指南(真实踩过的雷)

问题现象原因分析解决方案
编译通过但无法下载Flash算法缺失在 Utilities → Settings → Flash Download 中添加 STM32F1xx 64KB 算法
LED不亮PC13是低电平有效改为GPIOC->ODR ^= GPIO_ODR_ODR13;实现翻转
程序跑飞启动文件与芯片不匹配确保使用md版本(Medium Density)对应F103C8
中文路径导致文件丢失Keil对非ASCII字符处理异常所有路径、工程名一律使用英文
Build时提示权限被拒绝杀毒软件拦截关闭实时防护或添加Keil目录白名单

进阶建议:打造自己的工程模板

每次新建工程都要重复配置?太麻烦!

✅ 做法:将本次成功工程整理为模板:
1. 删除main.c的具体内容,保留框架;
2. 固化Include路径、宏定义、调试设置;
3. 保存为Template_STM32F103.uvproj
4. 下次直接复制整个文件夹,重命名即可快速开工

未来还可以逐步集成:
- USART串口打印支持
- SysTick精准延时
- FreeRTOS任务调度
- I2C/OLED驱动框架


写在最后:这不是终点,而是起点

当你看到那个小小的LED按照你的意志一明一灭时,恭喜你——已经迈过了嵌入式开发最艰难的第一步。

Keil4或许不是最先进的工具,但它像一把老钳子,虽不起眼,却能在关键时刻拧紧每一个螺丝。它教会我们的不只是如何编译代码,更是如何面对驱动问题、链接错误、硬件通信失败等一系列“现实世界的混乱”。

下一步你可以尝试:
- 移植标准外设库(StdPeriph Library)或HAL库
- 使用STM32CubeMX生成初始化代码,再导入Keil4
- 尝试Keil5,体验.uvprojx工程与更强大的调试功能

如果你在搭建过程中遇到任何问题,欢迎在评论区留言交流。我们一起把这条路走得更稳、更远。


🔧关键词汇总:keil4下载及安装、STM32开发环境、uVision4、ARMCC编译器、ST-Link驱动、Device Family Pack、启动文件、中断向量表、Flash下载、调试配置、嵌入式初学者、MDK-ARM、SystemInit、Cortex-M、工程模板、GPIO控制、HEX文件生成、SWD调试

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 7:38:06

5步打造智能避障JetBot:NVIDIA碰撞避免模型终极指南

一键部署避障模型到JetBot 【免费下载链接】jetbot An educational AI robot based on NVIDIA Jetson Nano. 项目地址: https://gitcode.com/gh_mirrors/je/jetbot 想知道如何让JetBot更聪明地避开障碍吗&#xff1f;亲爱的开发者朋友&#xff0c;今天我将带你开启一段从…

作者头像 李华
网站建设 2026/4/28 2:13:09

YOLO在自动驾驶中的应用:实时检测如何保障安全?

YOLO在自动驾驶中的应用&#xff1a;实时检测如何保障安全&#xff1f; 在一辆自动驾驶汽车高速行驶于城市道路时&#xff0c;前方突然有行人从视觉盲区横穿马路——系统必须在不到100毫秒内完成感知、识别、决策与制动。这样的场景对环境感知能力提出了极致要求&#xff1a;不…

作者头像 李华
网站建设 2026/4/22 2:48:40

RustFS分布式存储技术深度评估:性能瓶颈与架构演进路径分析

RustFS分布式存储技术深度评估&#xff1a;性能瓶颈与架构演进路径分析 【免费下载链接】rustfs &#x1f680; High-performance distributed object storage that is faster than MinIO 项目地址: https://gitcode.com/GitHub_Trending/rus/rustfs 摘要 本文基于Rust…

作者头像 李华
网站建设 2026/4/14 22:01:11

VSCode ESLint 终极配置与使用指南

VSCode ESLint 终极配置与使用指南 【免费下载链接】vscode-eslint VSCode extension to integrate eslint into VSCode 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-eslint VSCode ESLint 扩展是专为 Visual Studio Code 设计的强大代码检查工具&#xff0c;能…

作者头像 李华