MDK简介

Keil MDK,也称MDK-ARM,Realview MDK、I-MDK、uVision4 等。Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,被 ARM(英国)公司收购,作为在 51 单片机时代相当流行的一个软件。

而如果你是一个嵌入式工作者,尤其是主要使用ST或者飞思卡尔等工业产品为主的芯片,在国内的话可以说你的选择要么是keil要么就是IAR。keil作为一个IDE来说编辑功能缺失恨薄弱,但是硬件调试能力还是毋容置疑的,而keil配置简单容易上手,该有的功能操作也都具备,本文主要讲述作者的一些keil配置及习惯。

优点:

  • 界面友好,上手简单
  • 被ARM公司收购,编辑ARM相对友好,仿真功能十分强大
  • 官方提供各种芯片的启动代码,仿真库

缺点:

  • 自带编辑功能薄弱
  • 不支持/极少支持第三方插件

KEIL 5配置

界面配置

  • Keil 5及之后的版本缺少相关的原件类库,需要额外安装。可以从官网下载芯片库
  • Keil 4.6及之后的版本对中文字体支持依旧很差,通过修改成GB2312的简体中文编码,可以让注释的中文字体不会拆分,但默认的Courier New - 10不能够良好的显示所有字体,直接通过修改GB2312会形成字体锯齿化,缺少虚化的过渡。

  • 通过尝试多种字体以及添加fonts文件,发现要么中文字体显示不错,英文不行,要么英文显示不错,中文不行,很多情况代码字体偏大或者偏小,最终个人觉得较好的配置界面如下:

  • 如果需要修改背景颜色,需要对c/c++ Editor files 下的text,number等所有的background进行修改。配置如下:

  • 光标指向向的颜色修改如下:

  • 菜单栏view下面的所有工具栏颜色是跟随系统变化的,可以采用如果腾讯软件管家之类的工具开启护眼模式。

KEIL建立单片机工程文件注意事项::

  • 注意KEIL的配置详细可以参考“Keil 5配置”文档。
  • 工程文件建立目录结构需清晰可参考下图:

该工具条中主要存放的是项目中需要使用到的C文件(注意并不包含任何头文件),只有加入这个工具中得.c文件才会进行项目的编译。
下面仅作参考,根据个人的习惯而定制,相关存放内容说明:

1
2
3
4
5
6
CORE:存放SOC相关代码,包含.s启动文件,CMSIS的部分.c文件以及CPU相关的底层核心文件
FWLIB:固件库,厂方提供的标准固件库,用于调用外设的函数。
BSP:操作系统与芯片的中间层
USER:用户自己写的函数文件,包括main和用户定制的功能函数
OS:具体名称为操作系统名称,可以是UCOSuclinux等等嵌入式操作系统
README:整个工程的相关项目说明

  • 新建工程重点配置Define和Include Paths,如下图

需强调的是 Define 中的选项不能少,这些选项一般都是如:stm32f10x.h(芯片寄存器定义文件) 或者内核中的宏定义,可以用来进行芯片选型等操作,可以用查找工具全局查找,会发现相关的 #ifdef 语句。本质上面来说,Define 加入的内容就相当于在 c 文件中手动的写入 #define xxx 语句。
Include Paths 中定义的都是头文件所在的路径,注意是头文件的路经,这边 ..\CMSIS 等都是使用 windows 下相对路径的格式,如果头文件不在 Include Paths 下的路经中,则编译器无法找到相关头文件,会编译失败。

其他注意点:
C99Mode如果不勾选,默认可能会使用C89的编译器,一些如 bool 类型或者定义申明可能会无法编译,C89对老版本兼容性更好,但C99加入的许多新特性让编程更“合理”。具体根据自己项目需求而定。

  • Debug 中进行相关模拟仿真下载器设置。一定要记得仿真设置 Reset and Run

有仿真器的话,使用右边的仿真器选项,没有的话,则使用模拟。仿真器种类繁多,最常用的比如 JLINK,和 keil ulink 之类的,一些公司也会推出自己的仿真器,如silabs uda等

最好勾选setting->flash download下的Reset and Run,这样可以无需重新上电即可运行程序。

JLink 在连接 STM32F439 时,在勾选或者不勾选 Verify Code Download 时可能会出现下载错误,可能会是板子设计缺陷或者JLink版本过高。

  • Utilities:将Use Debug Driver勾选或者手动设置成相同的调试器。

  • 移植程序注意重点:

1
2
3
4
5
Project 的 USER 中一定要把 .c 源文件添加进去
FWLIB一定要记得添加 stm32f10x_xxx 相关的外设库文件
Stm32xxx_conf.h 中需取消相关注释
用户定义的.h头文件需加入 #include "stm32f10x.h",且不需要加入 Stm32xxx_conf.h 因为该头文件已经在 #include "stm32f10x.h" 中包含了。
添加用户自定义 .c 文件时,记得把其头文件写入到 main 函数所在文件中

参考链接:
http://www.jb51.net/os/windows/211837.html
http://comm.chinaaet.com/adi/blogdetail/32471.html