目录
一、创建新项目
?二、编写汇编语言、编译
三、调试分析
四、HEX文件分析
五、总结
六、参考文献
一、创建新项目
打开keil,点击project->New μVision Project创建一个新项目
命名文件后保存,
?选择STMicroelectronics->STM32F1 Series->STM32F103->STM32F103C8(其他型号同理)
?勾选CMSIS中的CORE和Device中的Starup,其中CMSIS中的CORE为Cortex-M处理器核和外设定义应用程序接口API(Application Programming Interface),也包括一致的系统启动代码。Device中的Starup则是包含了启动文件。
?右键点击Source Group 1,选择Add New Item to 'Source Group 1'
?选择Asm File(.s),创建一个汇编语言文件,输入文件名,点击add
?创建成功后如下图所示
?二、编写汇编语言、编译 ?
首先点击这个图标
?首先在output中勾选create HEX File,只有勾选了这个选项之后才能生成.HEX文件
?然后在Debug中选择Use Simulator使用仿真器进行仿真实验
完成上述操作后,在代码框输入以下代码
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
点击rebuild进行编译
编译成功,如下图
三、调试分析
首先在option for target中修改某些参数
?修改debug中Dialog和右侧的Paramete,改为下图所示
?调试运行,得到以下结果
?运行结果寄存器?R5 ,R6 ,R7 ,R8 ?的值和程序设置一致
四、HEX文件分析
hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
使用记事本打开.hex文件后,发现整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)
以我们上面生成的.hex文件为例,使用记事本打开
第一行为020000040800F2,可以看做0x02 0x00 0x00 0x04 0x08?0x00?0xF2,前四个字节和最后一个字节有特殊含义,中间为数据
第一字节表示该行的数据字节数;如第1行只有 0x08 0x00 两个字节的数据,类型是 04 ,即该行记录的是一个拓展地址(0x08 0x00 是地址信息,用法是将该地址(0x0800<<16) 后作为基地址。并且表示在下一个04类型行出现之前都要使用该地址.
例如第2行的地址信息是 0x0000,则表示该行数据从0x08000000( (0x0800<<16) | 0x0000 )开始记录。
第三行则从 0x08000010 ( (0x0800<<16) | 0x0010 )开始记录。
第四个字节有0x00 0x01 0x02 0x03 0x04 0x05,分别有以下含义
'00'Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
'01'文件结束记录:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
'02'扩展段地址记录:用来标识扩展段地址的记录
'03'开始段地址记录:开始段地址记录
'04'扩展线性地址记录:用来标识扩展线性地址的记录
'05'开始线性地址记录:开始线性地址记录
最后一个字节0xF2为校验和。校验和= 0x100 - 累加和。 ?
.hex文件每行格式相同,如下:
<0x3a> | [数据长度1Byte] | [数据地址1Byte] | [数据类型1Byte] | [数据nByte] | [校验1Byte] | <0x0d> | <0x0a> |
五、总结
在过程中遇到不少问题,例如寄存器的数据与程序不一致,是因为设置出现问题而导致的,keil环境在某些情况下自动配置还是有一些问题,要注意检查
六、参考文献
??????https://blog.csdn.net/m0_58414679/article/details/120467462?utm_source=app&app_version=4.15.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
Keil MDK5软件包的组成、Cortex微控制器软件接口标准CMSIS,重点介绍CMSIS-CORE的组成和使用_ChenGuiGan的博客-CSDN博客
HEX文件格式详解_林永康的博客-CSDN博客_hex文件格式
hex文件格式_百度百科
|