目录
一:新建工程
1.新建工程
2.配置环境
2.1.选择设备
2.2选择运行环境
2.3添加源文件
点开Target1 然后右击Source Group1进行文件添加
选择 Asm File (.s)
,创建汇编文件;设置源文件的名称;点击保存;
二:汇编程序
1.代码
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.仿真器设置
点击魔法棒 ,在 output界面下,勾选 Create HEX File
,才能生成 hex 文件
在 Debug界面下,选择 Use Simulator 表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”;parameter项为“-pSTM32F103C8”(parameter要改成自己选的芯片的型号),用于设置支持STM32F103C8的软硬件仿真。
3.编译调试
4.调试结果
最终结果寄存器的值与设置的值一致。
三.分析编译生成的Hex文件
用记事本打开hex文件,是一串十六进制字符
hex整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)
:020000040800F2为0x02,0x00,0x00,0x04,0x08,0x00,0xF2。
1.扩展线性地址记录
扩展线性地址记录(hex 文件的第一排十六进制)也叫作 32 位地址记录或 HEX386 记录
这些记录包含数据地址的高 16 位
当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从 Intel HEX 文件读取来的随后的记录
线性地址保持有效,直到它被另外一个扩展地址记录所改变
通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址
2.数据方面
Intel HEX 由任意数量的十六进制记录组成。每个记录包含 5 个域,它们按一定格式排列::llaaaatt[dd...]cc
每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字
在文件的最后一排,是一个文件的结束标志::00000001FF。
这个是一个 END OF FILE RECORD,标识文件的结尾
四.总结
在仿真器设置时遇到了困难,在查阅多番资料后发现了问题所在,在运行调试时也出现了一些问题,在几番调试测验后成功。