基于Keil MDK 完成对纯汇编语言的STM32工程的建立

1 stm21工程的创建

1.1 新建工程

启动mdk,点击菜单栏中的project
在这里插入图片描述
自行选择文件保存路径以及文件名称

1.2 配置环境

  1. 选择设备
    在这里插入图片描述
    本文选择STM32F103C8,之后进入以下窗口界面
  2. 选择运行环境
    ARM的CMSIS已经把开发所需要的软件组件都封装好了,因此直接选择即可;
    CMSIS下选择CORE
    DeviceStartup,其中包含了启动文件;

在这里插入图片描述

  1. 添加源文件
    鼠标右键单击Source Group 1,选择Add New Item to Group
    在这里插入图片描述
    本文介绍汇编项目,所以选择Asm File (.s) ,创建汇编文件,创建完成后结果如图
    在这里插入图片描述
    在这里插入图片描述

1.3 测试代码

 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 代码的编译与调试

2.1 仿真器设置

点击魔法棒,选择Debug,勾选Use Simulator,表示使用软件仿真,设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。
在这里插入图片描述

2.2 在线调试

  1. 编译无误后,点击调试按钮
    在这里插入图片描述之后进入的页面
    在这里插入图片描述
  2. 复位,全速运行,停止运行

复位:让程序复位到起点,调试设置恢复到初始状态
在这里插入图片描述

全速运行:快捷键F5,可以让程序运行常看运行状态,也可以在特定位置打断点,让程序运行到特定位置,查看运行状态。
点击添加断点,将光标放在所要设置断点位置,点击工具栏中按钮,添加断点
在这里插入图片描述

点击全速运行(或F5),在遇到断电时会停下
在这里插入图片描述

  1. 单步调试
    快捷键F11,每点击一次单步调试,程序运行一步,遇到函数会跳进函数执行
    在这里插入图片描述

  2. 逐行调试
    快捷键F10,每点击一次,程序运行一行,遇到函数跳过函数执行
    在这里插入图片描述

  3. 跳出调试
    快捷键Ctrl + F11,程序跳出当前函数执行,直到跳出最外面的函数(main函数)
    在这里插入图片描述

  4. 运行到光标处
    快捷键Ctrl + F10,将光标放在某一行,点击该按钮(或Ctrl + F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)
    在这里插入图片描述

  5. 跳转到暂停行
    这个功能在程序停止运行时有效,主要的作用就是在打开了很多文件时,不知道将程序翻到哪里去了,点击按钮即可知道我们的程序暂停在那个位置
    在这里插入图片描述

3 生成并观察HEX文件

3.1 HEX文件的生成

点击魔法棒,在output中勾选Create HEX File

在这里插入图片描述

完成之后重新编译,打开项目所在文件夹,.hex文件即在此处。若此处没有,即在项目路径下的Objects里面。

3.2 HEX文件格式说明

.hex文件部分内容如下:

在这里插入图片描述

一般HEX记录格式如下

在这里插入图片描述

  • 起始码:每行数据作为一帧,并由:作为起始码

  • 字节长度:两个十六进制数字(一对十六进制数字),指示数据字段中的字节数(十六进制数字对)。最大字节数为255(0xFF)。16(0x10)和32(0x20)是常用的字节数

  • 地址:四个十六进制数字,代表数据的16位起始存储器地址偏移量。数据的物理地址是通过将此偏移量添加到先前建立的基地址来计算的,因此允许内存寻址超过16位地址的64 KB限制。基地址默认为零,可以通过各种类型的记录进行更改。基地址和地址偏移量始终表示为大端值

  • 指令类型:两个十六进制数字00到05,定义了这行数据的具体含义

  • 数据:n字节数据序列,由2个n十六进制数字表示

  • 校验码:(两个十六进制数字),可以用来验证记录没有错误的计算值

参照HEX文件格式,我们需要了解前八个字节的含义

:02 0000 04 0800 F2

02:表示记录当中有2个字节
0000: 数据的起始地址
04: 表示HEX的记录类型为扩展线性地址记录
0800: 代表地址段
F2: 是这个记录的校验和

总结

学习了解了keil的使用,并了解到了HEX文件的格式与含义,初次使用keil软件,虽然过程中有许多挫折,但通过查找资料还是可以完成的


参考
https://blog.csdn.net/isyuuun/article/details/120559821?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日常脱发的小迈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值