1新建工程
 1.设置工程路径 2.设置名称,用first 3.保存
2配置环境
设置工程得目标环境,STM32F103ZE,如下,保存即可  选择运行环境,如下 1.CMSIS下选择CORE 2.Device下选择Startup  添加源文件 选择Asm File (.s) 设置源文件名称 保存 如下所示   添加源代码 
3测试代码
仿真器设置 在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。如下:  编译调试  结果符合预期,寄存器R5,R6,R7,R8的值与程序设置一致 

4分析生成的HEX文件
用记事本打开hex文件,是一串十六进制字符  1.扩展线性地址记录(hex 文件的第一排十六进制)也叫作 32 位地址记录或 HEX386 记录 这些记录包含数据地址的高 16 位,扩展线性地址记录总是有两个数据字节,外观如下  当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从 Intel HEX 文件读取来的随后的记录 线性地址保持有效,直到它被另外一个扩展地址记录所改变 通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址 2.数据部分 Intel HEX 由任意数量的十六进制记录组成。每个记录包含 5 个域,它们按一定格式排列::llaaaatt[dd…]cc 每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字 每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:  3.文件尾 在文件的最后一排,是一个文件的结束标志: 
5总结
从最开始的软件装机,到正式实验时还没有完成stm的工作环境的安装,在老师的提醒下,开始正常实验的进行,在实验过程中还有许多不懂的地方,编译了几次,与实验结果不符,问题出在设置仿真器的模式上,在老师的指导下,终于完成本次实验,虽然过程艰辛,但是成功的喜悦更值得去体会,也了解到了编程的学习需要实践。如有错误,请斧正。
6参考文献
基于 MDK 创建 STM32 汇编语言工程并分析 HEX
|