项目创建过程
1.打开keil uVision5,点击上方project,选择new project 2.设置好项目名称和存储位置,然后选择芯片,本人选择的是STM32F103ZE 3.勾选下列选项,点击ok  4.在source group1里新建一个item,文件选择为asm file,本人取名为test  5.在test.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
 6.点击左上角魔法棒,在debug中勾选use simulator,并选择J-link/J-TRACE Cortex,在output中勾选create HEX file     7.点击左上角build  8.点击右上角start/stop debug,出现下列画面则表示运行成功  
hex文件分析
找到output目录下的hex文件  使用记事方式打开  如图,第一行的:020000040800F2中,可以看作是0x02 0x00 0x00 0x04 0x08 0x00 0xf2 第一个 0x02 为数据长度。 紧跟着后面的0x00 0x00 为地址。 再后面的0x04为数据类型,类型共分以下几类: ‘00’ Data Record//数据记录 ‘01’ End of File Record//文件结束记录 ‘02’ Extended Segment Address Record//扩展段地址记录 ‘03’ Start Segment Address Record//开始段地址记录 ‘04’ Extended Linear Address Record//扩展线性地址记录 ‘05’ Start Linear Address Record//开始线性地址记录 然后,接着0x04后面的两个 0x08 0x00就是数据。 最后一个0xF2是校验码,效验码=0x100-累加和。 随便拿一条数据记录分析,比如第二条吧
内容 | 描述 |
---|
:100000:001806002031010008390100083B0100080A | | 10 | 数据将被下载到存储器当中的地址 | 00 | 记录类型(数据记录) | 1806…0008 | 数据 | 0A | 这个记录的校验和 |
|