找回密码
 立即注册
首页 业界区 业界 Keil MDK(uVision5)完全指导手册(个人总结,篇幅有限 ...

Keil MDK(uVision5)完全指导手册(个人总结,篇幅有限)

静轾 4 小时前
目录


  • 环境搭建与安装
  • 基础入门:第一个项目
  • 项目管理与配置
  • 调试技术详解
  • 高级应用与优化
  • 常见问题与解决方案
一、环境搭建与安装

1.1 系统要求


  • 操作系统:Windows 7/8/10/11(64位推荐)
  • 处理器:Intel Pentium 4 或更高
  • 内存:最低2GB,推荐4GB或以上
  • 硬盘空间:至少2GB可用空间
1.2 软件安装步骤

步骤1:下载安装包


  • 访问Keil官方网站下载MDK安装包(MDK5xx.EXE)
  • 或从国内镜像/云盘获取安装包(注意验证文件完整性)
步骤2:安装主程序


  • 右键点击安装程序,选择"以管理员身份运行"
  • 点击 Next 进入安装向导
  • 勾选 "I agree to all the terms..." 接受许可协议,点击 Next
  • 修改安装路径(建议改为D盘等非系统盘,如 D:\Keil_v5),点击 Next
  • 填写注册信息(可随意填写):

    • First Name: 任意
    • Last Name: 任意
    • Company: 任意
    • Email: 任意格式

  • 点击 Next 开始安装,等待进度条完成
  • 取消勾选 "Show Release Notes",点击 Finish
步骤3:软件注册(License激活)


  • 打开Keil uVision5,点击菜单 File → License Management
  • 复制 CID(Computer ID)框中的代码
  • 运行注册机程序(需管理员权限),将CID粘贴到对应位置
  • Target选择 ARM,Prof. Developers选择 Professional
  • 点击 Generate 生成许可证代码(LIC)
  • 复制LIC代码,粘贴到Keil的 New License ID Code (LIC) 框中
  • 点击 Add LIC,显示 "LIC Added Successfully" 即激活成功
步骤4:安装设备支持包(DFP)

Keil采用Pack机制管理不同厂商的芯片支持:

  • 打开Keil,点击工具栏 Pack Installer 图标(或菜单 Project → Manage → Pack Installer
  • 在左侧 Devices 栏选择芯片厂商(如STMicroelectronics)
  • 在右侧选择具体芯片系列(如STM32F1 Series)
  • 点击 Install 按钮安装对应的DFP(Device Family Pack)
  • 等待安装完成,关闭Pack Installer
国内用户提示:Pack下载可能较慢,可提前从Keil官网下载 .pack 文件,双击本地安装
二、基础入门:第一个项目

2.1 创建新项目(以STM32为例)

步骤1:新建工程


  • 打开Keil uVision5,点击菜单 Project → New uVision Project...
  • 选择项目保存路径(建议新建专用文件夹,如 D:\Projects\LED_Blink)
  • 输入项目名称(如 LED_Blink),点击 保存
步骤2:选择目标设备


  • Select Device for Target 对话框中展开厂商列表
  • 选择 STMicroelectronics → STM32F1 Series → STM32F103C8
  • 点击 OK 确认
步骤3:添加启动文件和库


  • 弹出 Manage Run-Time Environment 对话框
  • 勾选必要组件:

    • CMSIS → CORE(核心支持)
    • Device → Startup(启动文件)
    • Device → GPIO(如需使用GPIO)

  • 点击 Resolve 自动解决依赖关系
  • 点击 OK 完成配置
步骤4:创建源文件


  • Project 窗口中右键点击 Source Group 1
  • 选择 Add New Item to Group 'Source Group 1'...
  • 选择 C File (.c),命名为 main.c
  • 点击 Add 创建文件
步骤5:编写第一个程序(LED闪烁)
  1. #include "stm32f10x.h"
  2. // 简单延时函数
  3. void delay_ms(uint32_t ms) {
  4.     for(uint32_t i = 0; i < ms * 8000; i++) {
  5.         __NOP();  // 空操作指令
  6.     }
  7. }
  8. int main(void) {
  9.     // 使能GPIOC时钟
  10.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  11.    
  12.     // 配置PC13为推挽输出
  13.     GPIO_InitTypeDef GPIO_InitStruct;
  14.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
  15.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  16.     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  17.     GPIO_Init(GPIOC, &GPIO_InitStruct);
  18.    
  19.     while(1) {
  20.         GPIO_SetBits(GPIOC, GPIO_Pin_13);    // LED灭
  21.         delay_ms(500);
  22.         GPIO_ResetBits(GPIOC, GPIO_Pin_13);  // LED亮
  23.         delay_ms(500);
  24.     }
  25. }
复制代码
2.2 编译与下载

编译项目


  • 点击工具栏 Build 按钮(或按 F7
  • 查看 Build Output 窗口,确认 "0 Error(s), 0 Warning(s)"
  • 生成的.hex文件位于项目目录的 Objects 文件夹中
下载到开发板


  • 连接ST-Link调试器到电脑和开发板
  • 点击工具栏 Options for Target 按钮(或按 Alt+F7
  • 切换到 Debug 标签,选择 ST-Link Debugger
  • 点击 Settings,确认Port为 SW(Serial Wire)
  • 点击 OK 保存设置
  • 点击 Download 按钮(或按 F8)下载程序
  • 观察开发板LED是否开始闪烁
三、项目管理与配置

3.1 工程选项详细配置(Options for Target)

Target选项卡


  • Xtal (MHz):设置外部晶振频率(如8.0MHz)
  • Operating system:选择是否使用RTOS(如RTX)
  • System Viewer File:指定SVDF文件用于外设寄存器查看
Output选项卡


  • Create HEX File:勾选生成.hex文件用于烧录
  • Browse Information:勾选启用代码浏览和跳转
  • Select Folder for Objects:指定编译输出目录
C/C++选项卡(关键配置)


  • Define:添加预定义宏,如:

    • USE_HAL_DRIVER(使用HAL库)
    • STM32F103xB(芯片型号定义)

  • Optimization:优化级别选择

    • Level 0:无优化(调试推荐)
    • Level 3:最高优化(发布版本)

  • C99 Mode:勾选启用C99标准支持
  • Include Paths:添加头文件搜索路径(如 ./Inc, ./Drivers)
Debug选项卡


  • Use Simulator:使用软件仿真(无需硬件)
  • Use Debugger:选择硬件调试器(ST-Link/J-Link/ULINK等)
  • Settings:配置调试接口参数(SWD/JTAG)
3.2 多文件项目管理

文件组织结构建议
  1. Project/
  2. ├── Core/
  3. │   ├── Inc/          # 头文件
  4. │   └── Src/          # 源文件
  5. ├── Drivers/          # 库文件
  6. ├── Middleware/       # 中间件
  7. ├── Startup/          # 启动文件
  8. └── Output/           # 编译输出
复制代码
添加文件到工程


  • 在Project窗口右键点击目标组(如 Source Group 1
  • 选择 Manage Project Items...
  • 点击 Add Files... 选择.c/.s文件
  • 或使用 Add New Group 创建新的文件组(如 Drivers, Middleware)
3.3 使用Run-Time Environment(RTE)

RTE是Keil MDK的软件组件管理系统:

  • 点击 Project → Manage → Run-Time Environment
  • 浏览可用的软件组件:

    • CMSIS:核心支持、DSP库、NN库
    • Device:启动文件、外设驱动
    • Keil Middleware:文件系统、网络、USB协议栈
    • Board Support:板级支持包

  • 勾选所需组件,点击 Resolve 自动检查依赖
  • 点击 OK 自动添加文件到工程
四、调试技术详解

4.1 基础调试操作

启动调试会话


  • 点击 Debug → Start/Stop Debug Session(或按 Ctrl+F5
  • 或点击工具栏 Debug 按钮进入调试模式
断点设置


  • 设置/取消断点:在代码行号左侧单击,或右键选择 Insert/Remove Breakpoint
  • 条件断点:右键断点选择 Breakpoint Properties...,设置条件表达式(如 i == 100)
  • 临时断点:设置后执行一次自动删除
单步执行


  • Step Over (F10):执行当前行,不进入函数内部
  • Step Into (F11):执行当前行,进入函数内部
  • Step Out (Ctrl+F11):执行完当前函数,返回调用处
  • Run to Cursor (Ctrl+F10):运行到光标所在行
4.2 变量与内存查看

Watch窗口(变量监视)


  • 进入调试模式后,打开 View → Watch Windows → Watch 1
  • Name 列输入变量名(如 counter, GPIOA->IDR)
  • Enter 显示当前值,可实时观察变量变化
  • 支持表达式:如 (float)adc_value / 4096 * 3.3
Memory窗口(内存查看)


  • 打开 View → Memory Windows → Memory 1
  • 在地址框输入地址(如 0x20000000 查看SRAM)
  • 支持多种显示格式:Hex、ASCII、Float等
  • 可直接修改内存值(双击数值)
寄存器查看


  • 打开 View → Registers Window 查看CPU寄存器
  • 打开 View → Peripherals 查看外设寄存器(需正确配置SVD文件)
4.3 高级调试功能

逻辑分析仪(Logic Analyzer)


  • 打开 View → Analysis Windows → Logic Analyzer
  • 点击 Setup... 添加观察信号
  • 输入变量名或地址(如 PORTA, 0x4001080C)
  • 设置显示类型(Bit、Analog等)
  • 运行程序,实时观察波形变化
调用栈(Call Stack)


  • 打开 View → Call Stack Window 查看函数调用层级
  • 双击函数名可跳转到对应代码位置
  • 用于分析程序崩溃时的调用路径
串口调试(Serial Window)


  • 打开 View → Serial Windows → UART #1
  • 自动捕获程序中UART1的输出数据
  • 也可用于模拟输入数据到串口
五、高级应用与优化

5.1 编译优化配置

优化级别选择

Options for Target → C/C++ → Optimization 中选择:
级别说明适用场景Level 0无优化,调试信息最完整开发调试阶段Level 1基本优化,保留大部分调试信息初步优化测试Level 2高优化,可能影响调试性能测试阶段Level 3最高优化,调试信息可能丢失最终发布版本代码大小优化技巧


  • 勾选 One ELF Section per Function:删除未使用的函数
  • 使用 __attribute__((unused)) 标记可能未使用的变量
  • 启用 Link-Time Optimization (LTO)(如编译器支持)
5.2 使用Middleware中间件

Keil MDK-Professional提供丰富的中间件组件:
添加中间件步骤


  • 打开 Manage Run-Time Environment
  • 选择 Keil Middleware 类别
  • 勾选需要的组件:

    • File System:FAT文件系统支持
    • Network:TCP/IP协议栈
    • USB Device:USB设备协议栈
    • USB Host:USB主机协议栈
    • GUI:图形用户界面(emWin)

  • 配置组件参数(通过对应的配置文件)
  • 编写应用代码调用API
示例:添加FAT文件系统
  1. #include "rl_fs.h"
  2. // 初始化文件系统
  3. fsInitialize();
  4. // 挂载SD卡
  5. fsMount("M0:", "SD:");
  6. // 文件操作
  7. FILE *fp = fopen("M0:test.txt", "w");
  8. fprintf(fp, "Hello Keil!\n");
  9. fclose(fp);
复制代码
5.3 脚本编程与自动化

使用调试脚本(.ini文件)

创建调试配置文件实现自动化操作:
  1. // debug.ini 示例
  2. FUNC void Setup(void) {
  3.     SP = _RDWORD(0x08000000);     // 设置栈指针
  4.     PC = _RDWORD(0x08000004);     // 设置程序计数器
  5.     XPSR = 0x01000000;            // 设置xPSR
  6. }
  7. FUNC void GPIO_Init(void) {
  8.     _WDWORD(0x40021018, 0x00000010);  // 使能GPIOC时钟
  9.     _WDWORD(0x40011004, 0x00100000);  // 配置PC13
  10. }
  11. Setup();                          // 调用初始化函数
  12. GPIO_Init();
复制代码
Options for Target → Debug → Initialization File 中指定该脚本。
自定义编译后操作

Options for Target → User 标签中配置:

  • Run #1:编译前执行的命令
  • Run #2:编译后执行的命令
  • 示例:自动生成.bin文件
    1. fromelf --bin --output output.bin output.axf
    复制代码
六、常见问题与解决方案

6.1 安装与注册问题

问题解决方案注册时提示 "LIC is invalid"确认CID复制完整(无空格),检查注册机Target选择是否正确Pack安装失败以管理员身份运行Keil,或手动下载.pack文件双击安装找不到设备确认已安装对应厂商的DFP包,重启Keil6.2 编译错误

错误提示解决方案"undefined symbol"检查是否添加了对应的.c文件到工程,或缺少库文件"cannot open source input file"在C/C++选项中添加正确的Include Paths"No space in execution regions"芯片Flash/RAM不足,优化代码或更换大容量型号"multiple definition"检查是否有重复定义的变量或函数,使用extern声明6.3 调试问题

问题解决方案无法连接调试器检查接线(SWDIO/SWCLK/GND),确认驱动已安装,重启调试器程序不运行或跑飞检查启动文件是否正确,向量表地址配置,时钟配置断点无效确认代码已编译并下载,优化级别设为0,检查Flash断点数量限制变量值显示异常检查变量是否被优化(volatile声明),确认作用域正确6.4 中文显示与编码


  • 编辑器中文乱码

    • 点击 Edit → Configuration → Editor
    • Encoding选择 Chinese GB2312 (Simplified)UTF-8

  • printf输出中文乱码

    • 确保串口工具编码与Keil一致
    • 使用 printf("%s", "中文\r\n"); 格式

附录:学习资源

官方资源


  • Keil官方文档中心:www.keil.com/support/man_docs.asp
  • Keil学习平台:www.keil.com/learn(视频教程)
推荐书籍


  • 《ARM Cortex-M3与Cortex-M4权威指南》
  • 《嵌入式系统设计与实践》
国内社区


  • 正点原子、野火电子等STM32教程
  • CSDN、知乎Keil相关专栏
本手册基于Keil官方Getting Started指南及行业实践经验编写,涵盖从软件安装、基础项目创建、调试技巧到高级中间件应用的完整学习路径。建议初学者按照章节顺序实践,每个阶段都确保掌握后再进入下一阶段。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册