基于STM32的汇编程序

1.KEIL的下载及安装

1.1 mdk531的下载

链接:https://pan.baidu.com/s/1uiPGz_5Gorv0wOsAGUQsvg
提取码:3an4

1.2 mdk531的安装

解压压缩包后以管理员身份运行mdk531.exe

在这里插入图片描述

点击Next

在这里插入图片描述

勾选同意后,点击Next

在这里插入图片描述

选择好安装目录后点击Next

在这里插入图片描述

双击一下文件,安装STM32库

在这里插入图片描述

安装好后,我们可以激活它,以管理员身份运行Keil uVision5(注意一定要用管理员身份运行,否则无法激活),点击File中的License Management

在这里插入图片描述

之后会出现以下界面,复制红框中的CID码

在这里插入图片描述

解压keygen压缩包后,双击打开

在这里插入图片描述

第一步Target选择ARM,第二步将License Management中复制的CID码粘贴到注册机中的CID框中,第三步点击Generate,第四步将框中出现的Code码复制到License Management窗口中的New License ID Code中,然后点击Add LIC即可激活到2032。

在这里插入图片描述

2 基于STM32编写汇编程序

2.1 在Keil中新建工程

点击Project——>New uVision Project创建一个新工程

选择保存路径,最好每个工程都新建一个文件夹,命名文件后点击保存

在这里插入图片描述

在以下界面中选择自己对应的芯片

在这里插入图片描述

点击OK后会自动弹出以下窗口,勾选CMSIS中的CORE和Device中的Startup即可

在这里插入图片描述

2.2 添加源文件

在新建好的工程中找到Source Group 1后右键,然后点击Add New Item to Group Source Group 1…

在这里插入图片描述

因为我们是汇编文件,所以选择.s结尾的Asm File,然后输入文件名后点击添加即可。

在这里插入图片描述

编写汇编程序

 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
	
	END

2.3 编译并调试程序

Ctrl+F7编译程序

在这里插入图片描述

右键工程点击Options for Target ‘Target1’,或点击红色小方框标记出的魔法棒

在这里插入图片描述

在Output下勾选Create HEX File以创建HEX文件

在这里插入图片描述

F7或点击Build,我们可以观察到hex文件的生成

在这里插入图片描述

在Debug下勾选Use Simulator(因为我们这里仅使用软件仿真),勾选Run to main()。更改Dialog DLL项为DARMSTM.DLL和TARMSTM.DLL;parameter项为-pSTM32F103C8,用于设置支持STM32F103C8的软硬件仿真。

在这里插入图片描述

点击Start/Stop Debug Session开始调试

在这里插入图片描述

在调试界面下设置断点进行动态调试,我们在MOV R3, #13处设置断点

在这里插入图片描述

点击Run(F5)运行,我们可以看到R0,R1,R2都发生了改变,而R3仍为0。

在这里插入图片描述

取消断点,我们可以看见R0—R3,R5—R8都发生了变化

在这里插入图片描述

2.4 HEX文件分析

打开生成的hex文件

在这里插入图片描述

:020000040800F2

第一个字节 0x02表示本行数据的长度;
第二、三个字节 0x00 0x00表示本行数据的起始地址;
第四个字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
后面是数据字节0x08和0x00
最后一个字节 0xF2为校验和。

数据类型如下:
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 开始线性地址记录

3 总结

本文讲述了keil中进行的软件仿真,虽然过程简单,却也遇到不少问题,好在都顺利解决了。如有不足,欢迎指出!

4 参考文献

https://blog.csdn.net/qq_45237293/article/details/111825193?spm=1001.2014.3001.5501
https://blog.csdn.net/qlexcel/article/details/5494909

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值