目录
- 1、获取 KEIL5 安装包
- 2、开始安装 KEIL5
- 2.1、 激活
- 2.2、安装`DFP`库
- 3、工程创建
- 4、搭建框架
- 5、开始编写代码
1、获取 KEIL5 安装包
要想获得 KEIL5 的安装包,在百度里面搜索“KEIL5 下载”即可找到很多网友提供的下载文件,或者到 KEIL 的官网下载:下载官网,一大堆注册非常麻烦。建议使用最新或者靠近最新版本都可以。

2、开始安装 KEIL5



选择安装路径,路径不能带中文,next
提示: Pack 目录下后续可能会安装以后会用到的各种芯片的芯片包容易占空间,建议 C 盘剩余空间不多的用户可以直接在框中编辑改路径,把 C 改为 D(或其他盘,直接改第一个字符就行,注意不要删错后面符号)

安装ok即可
无需等待, 直接关闭整个软件
2.1、 激活
-
右键已经安装好的
Keil MDK图标, 选择以管理员方式打开 -
点开
File菜单栏, 选择License Management, 在打开的窗口中复制右上角的Computer ID值, 比如CA2RX-GUTUC -
右键
安装软件\Keil_MDK_ARM_5.35\keygen\keygen.exe, 选择以管理员方式打开, 这是Keil MDK的盗版激活器 -
将之前复制的CID值拷贝到激活器
CID输入框,Target选择ARM, 点击Generate按钮, 会生成一长串激活码 -
复制激活码, 填回到
Keil MDK界面的New License ID Code(LIC)中, 随后点击Add Lic -
显示如下
LIC Added Sucessfully说明激活成功

2.2、安装DFP库
- 安装
安装软件\Keil.STM32F1xx_DFP.2.4.1.pack - 官网链接

3、工程创建

-
在
D:\workspace-stm32某个硬盘路径中创建第一个工程的文件结构, 只需要创建前四个文件夹, 其他工程相关文件和文件夹稍后由Keil创建└─prj1_demo├─app(我们的应用层代码)├─driver(我们自行编写或其他人编写的第三方驱动)├─library(ARM和ST提供的官方库)├─doc(文档类)└─keil(存放keil工程文件) -
拷贝标准库的文件到我们的工程文件中
- 拷贝标准库
Libraries下的CMSIS和STM32F10x_StdPeriph_Driver两个文件夹到工程的library中 - 拷贝标准库
Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggle下的main.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h四个文件到工程的app中(不要拷贝system_stm32f10x.c)
对比c语言阶段的学习:
app相当于我们编写的代码, 通常统一以
main.c的文件作为入口lib相当于标准库或者qt库, 早期嵌入式习惯将一个工程相关的库都放在工程内, 之后的则使用共享库(不要改), 其中
cmsis是内核相关的操作库, 其他则是厂家的库prj相当于
makefile,xxx.pro等项目相关文件, keil/iar等都有自己对应的工程文件, keil的名叫<项目名>.uvprjxdrivers相当于
libmsc.so等放置的位置doc一般放置自述文件
readme.txt/readme.md和项目标准库的开发方式更像是移植, 而不是创建
- 拷贝标准库
4、搭建框架
-
Keil创建新工程, 工程文件保存在keil文件夹路径下, 命名stm32prj通常情况下, 工程名应该与整个工程文件夹的名字一样, 也就是
prj1_demo考虑到之后的工程都是从这个工程直接复制, 因此使用一个更通用的工程名
-
选择设备型号
f103ve -
不添加任何库(不勾选任何选项, 并确定)
我们使用keil仅仅为了帮我们管理工程, 以及使用keil的工具链来编译/下载/调试

-
project-manage-project items中,Groups按如下分组和添加文件(工程中的group不能有二级组, 所以lib部分需要拆分成三部分)Groups组名 说明 添加的文件 app用户代码 apps/main.capps/stm32f10x_it.cdriver第三方驱动 [留空] cmsis内核库 libraries/CMSIS/CM3/DeviceSupport/STM32F10x/system_stm32f10x.cstdLib标准库 libraries/STM32F10x_StdPeriph_Driver/src/xxx.cstartup启动文件 libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm/startup_stm32f10x_hd.s-
main()函数是C语言部分代码的入库, 在进入c代码之前, 芯片需要先执行startup启动文件才能启动, 随后才进入c语言部分, 并且这个启动文件使用的是汇编语言 -
选择
startup_stm32f10x_hd.s这个文件,因为hd代表 High Density(高密度),用于区分 STM32F10x 系列不同的 Flash 和 RAM 规格。
分类 后缀 Flash 容量 典型芯片 低密度(Low Density) ld16KB ~ 32KB STM32F101C4, STM32F103C6 中密度(Medium Density) md64KB ~ 128KB STM32F103RB, STM32F101R8 高密度(High Density) hd256KB ~ 512KB STM32F103RE, STM32F103ZC 超高密度(XL Density) xl512KB ~ 1MB STM32F103ZG, STM32F103VH - 标准库选择了全部文件, 实际上如果使用了什么外设, 就只需要包含对应文件即可, 提高编译速度
-
-
打开
Options for Target, 对这个项目进行一些额外配置-
Target中设置ARM Compiler为Use default compiler version 5此处为设置
编译器, 可选GCC或ARMCC, 新版keil默认为ARMCC v6, 标准库是按照ARMCC v5编写的

-
Output中勾选Create HEX Filekeil默认生成
axf文件, 而大多数编程器都使用hex格式的文件进行烧录这些文件其实就是最终生成的二进制文件

-
C/C++中设置Define-
STM32F10X_HD USE_STDPERIPH_DRIVER注意这里是两个词, 中间用空格隔开, 相当于全局增加了两句话:
#define STM32F10X_HD #define USE_STDPERIPH_DRIVER
-
-
C/C++中设置Include Paths(使用右边的...按钮, 选择文件夹, keil会自动识别为相对路径)..\app..\driver..\library\CMSIS\CM3\CoreSupport..\library\CMSIS\CM3\DeviceSupport\ST\STM32F10x..\library\STM32F10x_StdPeriph_Driver\inc
-
Debug中选择右边的Use为CMSIS-DAP Debugger教程使用的开发板是
野火F103, 配套仿真器为CMSIS-DAP标准的仿真器, 所以选择此项 -
再点开
Settings-
Debug标签页的Max Clock设置为5MHz -
Flash Download标签页勾选Reset and Run- 调低烧录速度更稳定
- keil默认烧录完毕后系统不会自动开始运行, 需要手动按一下开发板上的
reset按键, 而勾选此Reset and Run选项, 烧录完立刻运行, 不用手动重启
-
-
-
edit-configuration-Editor中设置Encoding为第二个选项(utf-8)Keil默认使用ANSI编码 不支持中文
改为更通用的UTF-8编码
5、开始编写代码

注意代码需要以空行结尾
-
编译, 使用到的编译选项为:
Traslate(ctrl+F7), 相当于gcc -c xxx.c, 编译当前打开的一个文件为xxx.o文件Build(F7), 相当于make, 编译整个工程, 只会编译有变动的文件Rebuild, 相当于make clean && make, 完全重新编译整个工程
