KEIL嵌入式环境下,基于STM32汇编程序的编写

前言

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完成
在这里插入图片描述

二.相关设置

  1. 点工具栏的扳手图标,进入设置界面
    在这里插入图片描述

  2. 设置编码形式为Chinese GB2312(Simplified),避免代码中的中文变为乱码,然后设置Tab size为4
    在这里插入图片描述

三.编写一个程序(LED闪烁)

(一)新建工程

  1. 打开Keil,点击project中的New μVision Project
    在这里插入图片描述
  2. 选择项目工程存放的位置,再命名,最后点击保存

在这里插入图片描述
3. 选择使用的STM32芯片
在这里插入图片描述
4. 对Run-Time Environment进行设置,设置完成后,点击OK,这样一个工程就建立完成
在这里插入图片描述

(二)新建文件

  1. 工程创建完毕后,在左上角右键点击source group1中的add new…

在这里插入图片描述

  1. 弹出的窗口中选择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文件

(一)仿真调试

  1. 点击红框处再选择Debug,勾选其下的Use Simulator在这里插入图片描述

  2. 设置下面的Dialog DLL项为:DARMSTM.DLL和TARMSTM.DLL
    Parameter项为:-pSTM32F103C8,点击OK
    在这里插入图片描述

  3. 点击红框处进行调试,并得到如下结果
    在这里插入图片描述
    在这里插入图片描述

(二)生成Hex文件

  1. 点击序号1处,再点击output,勾选Create Hex File,最后点击ok在这里插入图片描述
    2.点击build生成Hex文件
    在这里插入图片描述

五.Hex文件分析

  1. 找到生成的Hex文件
    在这里插入图片描述

  2. 右键打开方式选择记事本打开
    在这里插入图片描述

  3. 打开后得到如下内容

在这里插入图片描述

在这里插入图片描述
该文件为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寄存器变化状况,使用仿真器模式调试时要根据选择的设备参数及其设置。

七.参考链接

  1. https://blog.csdn.net/qq_45659777/article/details/120496577
  2. https://blog.csdn.net/qq_43279579/article/details/108880667?utm_source=app
  3. https://blog.csdn.net/qq_48641886/article/details/120562414?spm=1001.2014.3001.5502
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值