Keil嵌入式开发环境的搭建与配置及基于STM32汇编程序的编写
keil嵌入式环境的搭建与配置以及一个基于STM32简单汇编程序的编写
文章目录
一、搭建与配置Keil嵌入式开发环境
1.安装mdk
(1)打开下载的keil5文件夹,点击运行mdk531
(2)在弹出的界面,点击next
(3)勾选I agree,点击next
(4)自定义安装路径,然后点击next
(5)填写用户信息(可随便填写),然后点击next
(6)开始安装,安装完成后点击Finish

2.安装STM32芯片包
(1)在安装文件中点击Keil.STM32F1xx_DFP.2.1.0
(2)点击Next进行安装
(注:我已经安装过,所以会弹出如图片左下角所示的警告)
(3)开始安装,安装完成后点击Finish

至此,Keil嵌入式开发环境已全部搭建与配置完成。
二、基于STM32汇编程序的编写
1.新建工程
打开keil,点击菜单栏Project–>New μVision Project,新建项目,在弹窗中设置工程项目的名称和路径
2.配置环境
(1)选择设备
点击菜单中的Project,找到Options for Target ‘Target 1’并点击,在弹窗中选择相应的目标环境,此处我选的是STM32F103ZE
(2)选择运行环境
(3)设置仿真器模式
点击菜单中的Project,找到Options for Target ‘Target 1’并点击,选择Debug–>Use Simulator,将Dialog DLL以及Parameter处修改为自己选择的设备。
3.程序编写及调试
(1)添加源文件
右键单击Source Group 1,选择Add New Item to Group,添加Asm File (.s)文件,命名为test3并保存。
为其添加如下代码:
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)编译调试
点击Options for Target ‘Target 1’,点击Output—>Create HEX File,创建hex文件
选择Rebuild进行编译,看编译有无错误
选择Start Debug,然后利用调试工具开始进行调试操作
若寄存器R5,R6,R7,R8的值和程序设置一样,则成功了。
三、分析hex文件
1.打开hex文件
找到生成的hex文件,用记事本打开可看到文件内容
:100100004B0100084B0100084B0100084B0100089F
:100110004B0100084B0100084B0100084B0100088F
:100120004B0100084B0100084B0100084B0100087F
:100130000948804709480047FEE7FEE7FEE7FEE77B
:10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
:10015000054A064B7047000041020008990200085A
:100160000000002000060020000200200002002005
:10017000704770477047000080B500F001F880BDFF
:1001800082B041F204000021C4F20200019100910A
:1001900050F8041C41F4803140F8041C50F8041C51
:1001A00001F400310091019901310191009919B9CF
:1001B0000199B1F5A06FF1D150F8041C890354BF27
:1001C0000021012100910099012936D142F200015C
:1001D000C4F202010A6842F010020A600A6822F0C2
:1001E00003020A600A6842F002020A6001680160C4
:1001F00001680160016841F480610160016821F4D7
:100200007C110160016841F4E811016050F8041CA0
:1002100041F0807140F8041C50F8041C8901FBD5A2
:10022000016821F003010160016841F002010160F1
:10023000016801F00C010829FAD102B070470000F2
:1002400080B541F20000C4F202000168002241F0D2
:10025000010101604168CFF6FF0211404160016871
:100260004FF6FF72CFF6F66211400160016821F48B
:1002700080210160416821F4FE0141604FF41F01BB
:100280008160FFF779FF4EF60850CEF200004FF084
:100290000061016080BD00004FF00A004FF00B01CB
:1002A0004FF00C024FF00D0300F009F800F00AF8CF
:1002B00000F00BF8DFF81CE0DFF81CF0FEE74FF071
:1002C000050570474FF0060670474FF007074FF0DF
:0C02D00008087047BF020008CB020008BD
:040000050800029954
:00000001FF
2.hex文件分析
该文件为16进制的一串字符。hex文件的第一排字符称之为扩展线性地址记录,也称为32位地址记录或HEX386记录。
在第一行数据020000040800F2中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为:
①第一个字节 0x02表示本行数据的长度;
②第二、三字节 0x00 0x00表示本行数据的起始地址;
③第四字节0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录'01' End of File Record:用来标识文件结束,放在文件的最后,标识HEX文件的结尾'02' Extended Segment Address Record:用来标识扩展段地址的记录'03' Start Segment Address Record:开始段地址记录'04'Extended Linear Address Record:用来标识扩展线性地址的记录'05' Start Linear Address Record:开始线性地址记录
④然后是数据:0x08 0x00;
⑤最后一个字节 0xf2为校验和。
四、总结
从开始搭建与配置环境到开始一个基于STM32汇编程序的编写,遇到了许多的问题。比如程序安装过程繁琐,需要细心和耐心,不然就会出问题;还有程序调试出现报错的情况,可能是Debug中参数的设置有问题。总而言之,只有实践才能发现问题,通过本次作业,我了解了HEX文件内容,同时也知道了使用仿真器模式调试时要根据选择的设备更改参数。
五、参考链接
更多推荐




所有评论(0)