基于MDK创建一个汇编语言的STM32工程

1、创建一个新的工程文件

先打开MDK,启动后直接点击项目创建一个新的项目文件 

(1)设置好我们要保存此工程的路径

(2)设置好我们创建工程的名称,这里我使用的是test

(3)电子保存按键即可开始工程的配置

2、配置环境

2.1选择我们的单片机

现在我们需要搭建一个该工程的运行环境,我们的硬件设备是STM32F103ZET6,所以说我们要在现在弹出的窗口选择好对应的硬件设备,然后点击保存

2.2选择我们的运行环境

ARM的MDK已经把一些我们开发所需要用到的软件代码都封装好了,我们只需要在工程选项卡中勾选我们本次需要用到的代码即可

(1)CMSIS中选择CORE

(2)Device中选择Startup,其中包含了我们需要的启动文件

如图勾选即可

 

 点击保存

2.3编写源文件

鼠标右键单击Source Group 1,选择创建一个新的源文件

 (1)选择我们要创建的源文件的类型,因为我们要用汇编语言编写,所以选择Asm File (.s),创建汇编文件

(2)设置我们创建的源文件名称

(3)点击保存即可

 然后就会需要我们对我们刚才创建的test.s文件进行编写,代码如下:

 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

 然后我们的工程文件就编写完成

3测试代码

3.1仿真器设置

MDK内置仿真实验模块,现在需要我们进行一系列的配置才能直接使用仿真实验

 点击第一个“魔法棒”按钮

 再点击Debug选项

 在Debug选项下找到左上角的使用仿真Use Simulator,并勾选,表示我们使用仿真实验,此时我们的仿真设置就完成了

3.2编译调试

(1) 先对我们编写好的汇编文件进行编译

点击编译,等待编译成功,提示我们有两个警告,没有错误所以我们可以直接进行仿真调试

(2)仿真调试

点击右上角的“放大镜”按钮,或者直接Ctrl+F5 进行仿真调试

 

我们点击左上角的运行按钮,发现左下角命令框 中一直报错,我们程序中的代码意为通过寄存器地址改变R0,R1,R2,R3,R5,R6,R7,R8的值,但是通过我们对左边寄存器框的观察,发现寄存器中的值没有发生变化

此时我们就需要查一下我们发生的错误是什么,命令行中的错误意思是没有给相应的寄存器读写的许可,简单来讲就是说我们没有给与相应的权限

解决方法如下:

(1)我们先结束仿真

(2)点击仙女棒,找到应的Debug选项,设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;Parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。

(3)此时我们就赋予了我们的编译器相应的权限了

再次进入到仿真,并在结尾放置一个断点

运行结果如下:

 

可以看到此时我们的结果符合我们的预期, R0,R1,R2,R3,R5,R6,R7,R8的值也对应着改变成了十进制的10,11,12,13,5,6,7,8。

4总结

由于是第一次接触到汇编语言,所以关于程序的编写有着一定的困难,但是因为之前对STM32芯片有着一定的了解,并且对MDK已经较为熟练的掌握,所以这次的实验总体难度较小。虽然在工程运行的时候出现了一些差错,但是很快我就能通过错误的提示在网上找到相应的解决办法,总体来说,这次试验还是学到了一定的东西。

Guess you like

Origin blog.csdn.net/txmnQAQ/article/details/120526965