目录
一、keil环境搭建
百度网盘分享下载
mdk531安装
链接:https://pan.baidu.com/s/1ttrDhv6kXgAvPiYINf9iGw
提取码:1234
注册器
链接:https://pan.baidu.com/s/1T11pBKpD6xc-cNmXBskcaw
提取码:1234
支持包
链接:https://pan.baidu.com/s/1a7UDSVeLC4ktHNN9lV9oIA
提取码:1234
keil安装
通过以上链接下载mdk和注册器,点击安装mdk,根据提示自行更改软件路径和支持包路径,填写完注册信息后NEXT,等待安装。安装完成,点击Finish。
注册
1.点击运行注册器程序。
2.在桌面找到keil软件图标,点击右键,以管理员身份运行。
3.点击File–>Lincense Management–>Single-User Lincense,找到CID,复制CID中的内容填写到注册器的CID空白处,将注册器中Target选择为ARM,点击Generate,得到注册码。
4.将生成的注册码复制粘贴到Keil的New Lincense ID Code空白处,点击Add LIC,点击Close。
支持包安装
点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。
二、stm32汇编程序编写
(一)新建工程
双击打开keil,点击菜单栏Project–>New μVision Project,新建项目,在弹窗中设置工程项目的名称和路径,在这里,我新建名为test的工程文件。
(二)配置环境
①选择设备
点击菜单中的Project,找到Options for Target ‘Target 1’并点击,在弹窗中选择相应的目标环境,此处我选的是STM32F103C8
②选择运行环境
③添加源文件
右键单击Source Group 1,选择Add New Item to Group,添加Asm File (.s)文件,命名为TEST并保存。
为其添加如下代码
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
④设置仿真器模式
点击菜单中的Project,找到Options for Target ‘Target 1’并点击(点击flash下configure flash tools...按钮也可以),选择Debug–>Use Simulator,将Dialog DLL以及Parameter处修改为自己选择的设备,OK。
(三)编译调试
run
可以看见寄存器的值和程序设置一样。
三、HEX文件分析
该文件为16进制的一串字符。hex文件的第一排字符称之为扩展线性地址记录,也称为32位地址记录或HEX386记录。
在第一行数据02 00 00 04 08 00 F2中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为
-
第一个字节 0x02表示本行数据的长度;
-
第二、三字节 0x00 0x00表示本行数据的起始地址;
-
第四字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05
-
然后是数据,0x08 0x00
-
最后一个字节 0xf2为校验和。
总结
本次操作熟悉了keil5开发环境,编写stm32汇编程序,了解了hex文件内容和debug调试参数。
参考链接
搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写_镜仔吃柠檬的博客-CSDN博客
STM32-仿真调试时的SystemInit死循环_@liyanglong的博客-CSDN博客