点击菜单栏的project->new uVision project
CMSIS下选择CORE
Device下选择Startup(其中包含启动文件)
右键点击Source Group,选择如下图所示
选择Asm File(.s),创建汇编文件,输入文件名,然后点击Add
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
想生成Hex文件,进行下图操作
因为没有硬件需要进行如下设置
点击Rebuild进行编译
结果如下:
动态调试:我们在代码最后一行设置断点(在数字左边点击一下),如下图所示
文件位于创建的项目位置的Objects中
用记事本打开hex文件,具体如下:
官方定义:
<0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte][校验1Byte]<0x0d><0x0a>
例如第一行:
第一行:020000040800F2
断句02,0000,04,0800,F2。
也即0x02,0x00,0x00,0x04,0x08,0x00,0xF2。
“:” 对应格式中的<0x3a>,0x3a就是冒号的ASCII码。
“02”对应的就是长度,这里就如所见,就是长度为2。
“0000”对应数据地址,长度为2个字节。
“04”对应的数据类型。
“0800”对应的是数据,长度是浮动的,这里是2个字节,和前面的长度相呼应。
“F2”对应的是校验结果。
“”对应<0x0d><0x0a>,就是回车和换行,这个东西大家应该很熟悉,因为stm32串口发送例程中,串口数据的结束用的就是这两个符号做标识。
在keil上使用汇编语言创建STM32工程