一、新建项目
1)新建工程
- 点击
Project
——>New uVision Project
创建新项目
输入工程名并保存
这里我选择的是 STM32F103VE 芯片,然后点击 OK
ARM
的 CMSIS
已经把开发所需要的软件组件都封装好了,因此直接选择即可—— CMSIS
下选择 CORE
;Device
下 Startup
(其中包含了启动文件)
- 点击下方 OK 即可
2)添加源文件
- 右击
Source Group 1
,点击Add New Item to Group 'Source Group 1'
- 点Image File后输入文件名
仿真器设置:点击魔法棒
在output中勾上Create HEX file
再点击debug,在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。
调试好仿真器后输入以下代码:
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
按F11运行,出现以下界面,最终结果可以看出寄存器的值与设置的值一致。
四、分析编译生成的Hex文件
分析Hex文件第一行内容
第一行内容分别是0x02,0x00,0x00,0x04,0x08,0x00,0xF2。
0x02
该行数据中有两个数据
0x00 0x00
本行数据的起始地址位
0x04
用来标识扩展线性地址的记录
该字节还可以是其他值,下面是其他值的含义
00:用来记录数据,HEX文件的大部分记录都是数据记录
01:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
02:用来标识扩展段地址的记录
03:开始段地址记录
05:开始线性地址记录
0x08 0x00
该行两个字节的数据
数据类型是 04 ,即该行记录的是一个拓展地址(0x08 0x00 是地址信息,用法是将该地址(0x0800<<16) 后作为基地址
0xF2
校验和,校验和= 0x100 - 累加和