当前位置:   article > 正文

keil安装与汇编调试_keil5中单独运行代码

keil5中单独运行代码

Keil5下载安装与配置

下载地址

1、Keil5:

官网下载地址:https://www.keil.com/download/product/

2、Keil注册器:

链接:https://pan.baidu.com/s/1XFTEdhNFIx4HuZfYKxrc6g
提取码:4869

3、stm32

链接:https://pan.baidu.com/s/1Pe8ppEkdTWRvZhPErhDTSQ
提取码:4869

点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。

Keil注册

1、keil5以及注册器安装完成后,关闭杀毒软件,然后以管理员身份运行keil5。

2、在file->license management中,找到CID,并复制下来。

3、关闭声音,运行注册器,选择arm并输入刚刚复制的CID,生成一段代码

4、将这段代码输入license management的LIC中,点击add lic

创建项目

新建项目

一、点击project -> new project

在这里插入图片描述

选择一个路径来存放你的项目文件,并输入你的项目文件名称,这里我写的是project。

点击保存。

在这里插入图片描述

二、在弹出的页面中,选择你自己所用的芯片。我选用的是野火的指南者,因此选择的是对应的STM32F103VE。

在这里插入图片描述

三、芯片选择完成后选择运行环境,勾出图中框的部分即可。

勾选后选择ok,项目就构建好了。

向项目中添加文件

一、新建文件

在这里插入图片描述

点击左上角的新建文件,待文件出现后点击保存,将文件保存在项目路径下。

因为这里要编写汇编语言,因此文件后缀名是.s。以后用c语言开发的话一般用.c或者.h文件。

二、将文件加入项目

在这里插入图片描述

右键点击项目里的Source Group 1,选择添加现有文件(图中所框住的部分)

然后在弹出的页面中选择刚刚保存的.s文件,将其加入本项目。

在这里插入图片描述

点击add,再关闭这个窗口。这时候再看左边的项目结构,就会发现文件已经加入项目里面了。现在可以对其进行编写了。

编写代码并调试

一、编写代码

在保存的文件中编写以下代码:

 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

这段代码的功能是往寄存器R0-R8中填入数据。

在这里插入图片描述

二、配置

在编写好代码后,点击上方的魔术棒图标,如图选择output并勾选生成hex文件

再点击debug,如图所示,选择使用左边的仿真器,并填写好自己的设备信息。

在这里插入图片描述

我使用的野火指南者,就按图上显示的那样填写。不同的板子要填写的内容也不一样。

三、开始调试

在func3的末尾打上一个断点,然后点击调试按钮,如图所示:

在这里插入图片描述

点击调试按钮后进入调试界面。

在这里插入图片描述

在界面的左边是寄存器的内容,当进行调试的时候,左边的寄存器内容会发生变化。右边上面是执行的指令,下面是源代码。

点击左上角的运行或者单步调试,就可以看见左边的寄存器内容发生了变化。

在这里插入图片描述

随着程序的运行,寄存器中的内容开始发生变化。

hex文件

在选择生成hex文件后,编译项目会生成一个hex文件。这个hex文件下载到单片机中即可运行对应的程序。

至于这个hex文件里面又是什么呢

以上面的代码为例,它生成的hex文件内容如下:

:020000040800F2
:100000000006002031010008390100083B0100080A
:100010003D0100083F010008410100080000000008
:100020000000000000000000000000004301000884
:1000300045010008000000004701000849010008D0
:100040004B0100084B0100084B0100084B01000860
:100050004B0100084B0100084B0100084B01000850
:100060004B0100084B0100084B0100084B01000840
:100070004B0100084B0100084B0100084B01000830
:100080004B0100084B0100084B0100084B01000820
:100090004B0100084B0100084B0100084B01000810
:1000A0004B0100084B0100084B0100084B01000800
:1000B0004B0100084B0100084B0100084B010008F0
:1000C0004B0100084B0100084B0100084B010008E0
:1000D0004B0100084B0100084B0100084B010008D0
:1000E0004B0100084B0100084B0100084B010008C0
:1000F0004B0100084B0100084B0100084B010008B0
:100100004B0100084B0100084B0100084B0100089F
:100110004B0100084B0100084B0100084B0100088F
:100120004B0100084B0100084B0100084B0100087F
:100130000948804709480047FEE7FEE7FEE7FEE77B
:10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
:10015000054A064B70470000A50200087901000817
:100160000000002000060020000200200002002005
:1001700070477047704700004FF00A004FF00B01C6
:100180004FF00C024FF00D0300F009F800F00AF8F0
:1001900000F00BF8DFF81CE0DFF81CF0FEE74FF092
:1001A000050570474FF0060670474FF007074FF000
:1001B000080870479F010008AB01000810B500F067
:1001C00001F810BD0CB50020019000903348006884
:1001D00040F480303149086000BF3048006800F4C6
:1001E000003000900198401C0190009818B90198C7
:1001F000B0F5A06FF1D12948006800F4003010B1CB
:100200000120009001E0002000900098012843D1D7
:100210002348006840F01000214908600846006843
:1002200020F0030008600846006840F00200086003
:100230001A484068194948600846406848600846BE
:10024000406840F4806048600846406820F47C10B4
:1002500048600846406840F4E81048600846006876
:1002600040F08070086000BF0C48006800F000702B
:100270000028F9D00948406820F003000749486089
:100280000846406840F00200486000BF03484068EC
:1002900000F00C000828F9D10CBD0000001002404D
:1002A0000020024010B51348006840F001001149D9
:1002B000086008464068104908400E4948600846F2
:1002C00000680E4908400B4908600846006820F4A1
:1002D000802008600846406820F4FE0048604FF423
:1002E0001F008860FFF76AFF4FF000600449086054
:1002F00010BD0000001002400000FFF8FFFFF6FEF6
:0403000008ED00E024
:040000050800017975
:00000001FF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

对于如何理解这些数据,我参考了这篇博客:https://blog.csdn.net/MQ0522/article/details/121648987

正如这篇博客里所说,文件里的每一行都是一条数据记录,以冒号开头,以换行结尾。而数据则使用十六进制的ASCII码表示。

对于每一条记录,有六个部分,从左往右依次是:

冒号(1个字符),数据长度(一个字节),起始地址(两个字节),数据类型(一个字节),数据(字节数是数据长度值的两倍),校验和(最后一个字节)

  • 数据长度N:表示本行的数据长度,采用十六进制,范围是0x00~0xff

  • 起始地址:本行数据的起始地址,16进制:0~FFFF

    注意,当数据类型为0x01~0x05时,起始地址为0000

  • 数据类型:一个字节表示,有以下几种情况:

    00:表示记录数据

    01:表示文件的结束

    02:标识扩展段地址

    03:标识开始段地址

    04:标识扩展线性地址

    05:标识开始线性地址

  • 数据:

    本条记录的主体,数据长度为N

  • 校验和:用0x100-累加和(前面所有十六进制数之和)表示


参考资料

1. https://blog.csdn.net/MQ0522/article/details/121648987
2. https://blog.csdn.net/qq_45659777/article/details/120496577

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/927319
推荐阅读
相关标签
  

闽ICP备14008679号