嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容
目录一.创建项目
1.下载并安装keil5软件以及装好所需要的版本的包
2.点击project-> new uVision Project
3.取一个合适的项目名字
4选取你所需要的开发板型号我只历史STM32F103C8
5.在创建好的项目之中要勾选上CORE以及STARTup
6,在项目之中添加文件,选择源文件以s为后缀的那个
二. 编写程序并进行模拟调试
1.输入以下代码于你刚刚创建的文件之中
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
2.点击魔法棒,勾选 “Create HEX File” 和 配置仿真器
3.点击仿真调试,查看运行结束的结果
在左边可以看到寄存器之中的内容符合预期
三.查看生成的HEX文件
在网上查阅资料可以得知
hex文件它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
对于我们的hex文件可以得知如图,
其中第一行 :020000040800F2 中,可以看做是0x02 0x00 0x00 0x04 0x08 0x00 0xf2
第一个0×02表示该行数据中有两个数据
第二个,第三个0x00 0x00表示本行数据的起始地址位
第四个字节 0x04 表示扩展线性地址记录,对应上述的TT域
第五个、第六个 0x08 0x00表示数据字节,与数据长度域(LL)中对应,即第一个 0x02
最后一个字节0xf2为校验和。校验和= 0x100 - 累加和