嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

目录

一.创建项目

1.下载并安装keil5软件以及装好所需要的版本的包

2.点击project-> new uVision Project

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

3.取一个合适的项目名字

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

4选取你所需要的开发板型号我只历史STM32F103C8嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

5.在创建好的项目之中要勾选上CORE以及STARTup嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

6,在项目之中添加文件,选择源文件以s为后缀的那个嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

二. 编写程序并进行模拟调试

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” 和 配置仿真器

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

3.点击仿真调试,查看运行结束的结果

在左边可以看到寄存器之中的内容符合预期

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

三.查看生成的HEX文件

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

在网上查阅资料可以得知

hex文件它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

嵌入式学习入门(一)-----基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容

对于我们的hex文件可以得知如图,

其中第一行 :020000040800F2 中,可以看做是0x02 0x00 0x00 0x04 0x08 0x00 0xf2

第一个0×02表示该行数据中有两个数据

第二个,第三个0x00 0x00表示本行数据的起始地址位

第四个字节 0x04 表示扩展线性地址记录,对应上述的TT域

第五个、第六个 0x08 0x00表示数据字节,与数据长度域(LL)中对应,即第一个 0x02

最后一个字节0xf2为校验和。校验和= 0x100 - 累加和

上一篇:JNI_最简单的Java调用C/C++代码


下一篇:c++ string char* const char*