目录
前言
Keil MDK-ARM介绍
MDK:Microcontroller Developer Kit微控制器开发工具。
Keil MDK-ARM是美国Keil软件公司(现已被ARM公司收购)出品的支持ARM微控制器的一款IDE(集成开发环境)。
MDK-ARM包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件。具有业行领先的ARM C/C++编译工具链,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、TI等众多大公司微控制器芯片。
一.环境配置
(一)下载地址
1.官方下载地址
2.百度网盘下载地址
添加链接描述
提取码:pja0
此文章选用
(二)安装KEIL
1.安装keil
打开安装包,点击next
点击方框同意,再点击next
选择路径,点击next
填写信息,点击next
安装完成,点击finish
安装后还得进行第二步。
2.注册
打开下载包中的kegen_new2032,点击运行
打开Keil uVision5,点击File,找到License Management点击
找到CID,并复制
将刚才复制的内容,粘贴到刚刚打开的注册机kegen_new2032中的CID,然后target选择ARM,最后点击Generate会生成一个注册码
将生成的注册码粘贴到License Management对应的位置,然后点击AddLIC,再点击Close就结束了
3.pack支持包安装
在下载的压缩包中打开以下文件
弹出以下窗口,点击next
等待,最后点击finish完成
二.相关设置
-
点工具栏的扳手图标,进入设置界面
-
设置编码形式为Chinese GB2312(Simplified),避免代码中的中文变为乱码,然后设置Tab size为4
三.编写一个程序(LED闪烁)
(一)新建工程
- 打开Keil,点击project中的New μVision Project
- 选择项目工程存放的位置,再命名,最后点击保存
3. 选择使用的STM32芯片
4. 对Run-Time Environment进行设置,设置完成后,点击OK,这样一个工程就建立完成
(二)新建文件
- 工程创建完毕后,在左上角右键点击source group1中的add new…
- 弹出的窗口中选择Asm File,然后命名,点击add
3. 将以下代码粘贴到新建文件中
AREA MYDATA, DATA
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
MOV R0, #10
MOV R1, #11
MOV R2, #12
MOV R3, #13
;LDR R0, =func01
BL func01
;LDR R1, =func02
BL func02
BL func03
LDR LR, =func01
LDR PC, =func03
B .
func01
MOV R5, #05
BX LR
func02
MOV R6, #06
BX LR
func03
MOV R7, #07
MOV R8, #08
BX LR
(三)编译程序
点击Build进行编译,0错误,1警告,表示编译成功
四.仿真调试及生成Hex文件
(一)仿真调试
-
点击红框处再选择Debug,勾选其下的Use Simulator
-
设置下面的Dialog DLL项为:DARMSTM.DLL和TARMSTM.DLL
Parameter项为:-pSTM32F103C8,点击OK
-
点击红框处进行调试,并得到如下结果
(二)生成Hex文件
- 点击序号1处,再点击output,勾选Create Hex File,最后点击ok
2.点击build生成Hex文件
五.Hex文件分析
-
找到生成的Hex文件
-
右键打开方式选择记事本打开
-
打开后得到如下内容
该文件为16进制的一串字符。hex文件的第一排字符称之为扩展线性地址记录,也称为32位地址记录或HEX386记录。
在第一行数据020000040800F2中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为:
第一个字节 0x02表示本行数据的长度;
第二、三字节 0x00 0x00表示本行数据的起始地址;
第四字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05
‘00’ Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
‘01’ End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
‘02’ Extended Segment Address Record: 用来标识扩展段地址的记录
‘03’ Start Segment Address Record:开始段地址记录
‘04’ Extended Linear Address Record: 用来标识扩展线性地址的记录
‘05’ Start Linear Address Record:开始线性地址记录
然后是数据,0x08 0x00
最后一个字节 0xf2为校验和。
:00000001FF在文件最后一排,是一个文件结束的标志。
六.总结
通过本实验,搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。了解Hex文件内容格式及其前8个字节内容含义;学习在没有硬件条件下进行仿真调试的方法,观察ARM寄存器变化状况,使用仿真器模式调试时要根据选择的设备参数及其设置。
七.参考链接
- https://blog.csdn.net/qq_45659777/article/details/120496577
- https://blog.csdn.net/qq_43279579/article/details/108880667?utm_source=app
- https://blog.csdn.net/qq_48641886/article/details/120562414?spm=1001.2014.3001.5502