一 、配置Keil嵌入式开发环境
1.1建立工程
-
首先安装并打开
Keil5
软件 -
点击
Project
,然后在下拉页找到New uVision Project...
-
给建立好的工程命名并保存到一个相应的路径中
-
然后选择硬件的使用,我使用的是
STM32F103VE
,可以根据自己的实际情况进行选择
-
点击OK,然后在
CMSIS
下点击勾选CORE
,再在Device
下勾选Starup
于是我们的工程就建立好了
1.2配置环境
-
在建立好的工程下面选择
Target 1
,然后右键点击Source Group 1
,选择Add New Item to Group Source Group 1...
-
接着选择文件类型为
Asm File(.s)
,然后为该文件输入名字
-
在页面下输入如下汇编语言
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
END
二、基于STM32汇编程序的编译调试
2.1编译调试代码
-
点击编译按键进行编译,没有错误即可
-
配置Debug选项,点击图示的魔法棒或者选择
Options for Target 'Target1'...
, -
由于没有接入硬件,这里只进行仿真测试,在
Debug
下选择Use Simulator
注意:Keil5将旧版本文件转换后会出现错误。还需要进行一些配置,依然在Debug
选项卡中,还需要改动两处。Dialog DLL
改为DARMSTM.DLL
,
Parameter
改为-pSTM32F103VE
(此项根据你选择芯片的具体型号而定)
2.2仿真调试
- 设置完毕后点击
Start/Stop Debug Session
按键进行调试
三、软件进行仿真调试,观察各寄存器变化情况
3.1设置断点运行,观察寄存器变化情况
- 进入调试后,我们进行断点调试,可以动态展示寄存器的变化
- 首先在
MOV R0, #10
这里点击Insert Breakpoint
设置断点,然后点击run
运行程序 - 观察左边寄存器
R0
,R1
,R2
,R3
的值,可以看到都为0没有改变 - 点击
Remove Breakpoint
取消原来设置的断点,然后重新在BL function1
设置断点,再次运行,此时可以看到R0
变为0x0000000A
,R1
变为0x0000000B
,R2
变为0x0000000C
,R3
变为0x0000000D
3.2分析hex文件格式
-
首先在
Output
页面点击勾选Creat HEX file
-
然后重新编译一次即可生产
hex
文件
-
对
hex
文件进行分析
- 第一个字节表示的是本行数据的长度
- 第二,三字节表示本行数据的起始位置
- 第四个字节表示数据类型
- 第五个字节为校验码