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已经较为熟练的掌握,所以这次的实验总体难度较小。虽然在工程运行的时候出现了一些差错,但是很快我就能通过错误的提示在网上找到相应的解决办法,总体来说,这次试验还是学到了一定的东西。