基于STM32汇编程序的编写

基于STM32汇编程序的编写

本文内容:利用Kevil 5完成一个基于STM32汇编程序的编写与调试


搭建配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写、软件调试并分析生成的HEX文件

1.新建工程

打开Kevil 5,进入界面后打开project,选择新建New uVision project
在这里插入图片描述

设置新工程的保存路径和名称
在这里插入图片描述

2.配置环境

选择设备,在新工程建立后的弹出窗口中选择STM32系列芯片,并选择STM32103ZET6,确认后保存即可

在这里插入图片描述
此界面也可通过上方Project中的options fo target找到

接下来是选择运行环境,ARM的CMSIS已经把开发所需要的软件组件都组装好了,因此直接选择即可。
即: 1.CMSIS下选择CORE
   2.Device下选择Startup,其中包含了启动文件
在这里插入图片描述

创建完成后,在右侧project栏展开Target 1,右键Source选择Add New item to Group
在这里插入图片描述

在弹出页面中选择要生成的源文件,因为我们要进行的是汇编语言的编写,所以我们选择.s后缀的文件命名并选择保存路径
在这里插入图片描述
最后即可在生成的源文件中进行汇编语言程序编写

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


  接下来是设置仿真器的模式,在上方找到Project,打开后选择Options for Target,选择Debug显示如下画面,分为两个部分,左半部分为虚拟仿真器,右半部分为硬件,此处由于条件首先,我们选择虚拟仿真,勾选上方Use Simulator
在这里插入图片描述

复制上文代码,粘贴入源文件,并在工具栏中选择build编译
在这里插入图片描述
在右上方放大器中有个红色d的图标选择调试,进入调试界面
在这里插入图片描述
左侧显示了寄存器及其值,以及ARM当前工作模式等信息,接着单步运行程序,可以看到相关寄存器的值发生变化,也可以打开memory窗口查看内存情况。

4.分析生成的HEX文件

在project中找到Options for target,打开output并勾选生成HEX文件,在存储路径下找到并用记事本打开HEX文件
在这里插入图片描述
 该文件为16进制的一串字符,HEX文件的第一排字符为扩展性地址记录,也称为32位地址记录HEX386记录
 第一行数据020000040800F2,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为:
1. 第一个字节0x02表示本行数据的长度
2. 第二、三字节 0x00 0x00表示本行数据的起始地址;

3. 第四字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05

'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录

'01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾

'02' Extended Segment Address Record: 用来标识扩展段地址的记录

'03' Start Segment Address Record:开始段地址记录

'04' Extended Linear Address Record: 用来标识扩展线性地址的记录

'05' Start Linear Address Record:开始线性地址记录

4. 然后是数据,0x08 0x00

5. 最后一个字节 0xf2为校验和。


总结

以上就是本文全部内容,介绍了基于STM32的汇编语言编写的测试、编程调试和分析生成的HEX前8个字节的内容含义,了解了Kevil软件的基本操作,仿真调试的操作步骤以及观察寄存器的情况变化。


参考文章

https://blog.csdn.net/qq_45659777/article/details/120496577
https://blog.csdn.net/qq_43279579/article/details/111717607

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值