Keil的搭建并配置
MDK源自德国的KEIL公司,是 RealView MDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。目前最新版本为:MDK5.21A,该版本使用uVision5 IDE集成开发环境,是目前针对ARM处理器,尤其是Cortex M内核处理器的最佳开发工具。
一、配置环境
1.MDK的安装
MDK(Microcontroller Development Kit)是针对ARM处理器,特别是Cortex-M内核处理器的最佳开发工具。
1.1 MDK5下载
② 百度网盘分享下载
提取码:8520
1.2安装
- 下载后,请点击:mdk_xxx.exe,安装MDK软件
2.点击NEXT3,勾选并点击NEXT
4.选择安装路径,并点击Next>>。
5、随意输入Name和E-mail,再点击Next>>
6、等待安装 并点击Finish
7、点击OK后,鼠标会变成转圈圈的,因为正在进行在线安装各种pack,但会安装失败,不用着急,右上角关掉窗口,下面开始手动安装pack包。
2、安装stm32 pack
(1)在刚解压缩的文件中,双击打开ARM.CMSIS.3.20.4包,出现安装界面后点击Next>>,开始安装。
(2)点击Finish。
(3)在刚解压缩的文件中,双击打开Keil.STM32F1xx_DFP.1.0.4包,出现安装界面后点击Next>>,开始安装。
(4)安装结束后点击Finish。
(6)安装2.2.0的STM32 pack
二、Mdk使用配置技巧
1.设置tab键为2个空格
进入Configuration->Editor,设置如下:
勾选 Insert spaces for tabs项 即这是tab键为空格填充,设置Tab size的数值可以设置填充的空格数,常用的是2或4
2.代码自动补齐
进入Configuration->Text Completion,设置如下:
勾选“Symbols after”,然后在方框内输入“3”,即输入3个字符就开始字符匹配。最后使用鼠标左键单击“OK”保存配置。
3.语法动态错误检测
进入Configuration->Text Completion,设置如下:
勾选即开启语法动态错误检测
4.右边距指示
进入Configuration->Editor,设置如下:
编辑分隔符标记的位置号。位置号的默认值是80,范围[1-999]。
下拉可选择:
None:无标记;
Vertical Line:虚线标记;
Colored Background:背景颜色标记。
三、编写 一个简单的汇编程序
1、创建新工程
1.1创建工程
①点击Project,选择New uvison Projec
②选择文件保存的路径以及文件的名称
2.环境配置
①选择对应的芯片,本文章采用的STM32F103C8T6
②运行环境选择,主要是CMSIS下选择CORE;Device下Startup,其中包含了启动文件
自此,一个工程的建立就算完成了。
2、添加文件
1.鼠标右键单击Source Group 1,选择Add New Item to Group
2.选择 Asm File (.s) ,设置源文件的名称,点击Add
自此,添加文件的过程就完成了,就可以开始编写汇编程序。
3、汇编程序
代码
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
选择仿真器
设置硬件仿真器为ST_Link(根据自己的实际情况进行选择),仿真器的模式设置为JTAG接口或者SW(根据自己的实际情况进行选择)。设置完成,连接相应的仿真器会有对应信息显示。
仿真调试(断点设置是在代码行前点击,出现红点,即表明断点设置成功)
调试效果
最终结果可以看出寄存器的值与设置的值一致。
4、分析编译生成的Hex文件
1.最终生成程序的各部分的大小
2.分析Hex文件第一行内容
第一行内容分别是0x02,0x00,0x00,0x04,0x08,0x00,0xF2。
0x02
该行数据中有两个数据
0x00 0x00
本行数据的起始地址位
0x04
用来标识扩展线性地址的记录
该字节还可以是其他值,下面是其他值的含义
00:用来记录数据,HEX文件的大部分记录都是数据记录
01:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
02:用来标识扩展段地址的记录
03:开始段地址记录
05:开始线性地址记录
0x08 0x00
该行两个字节的数据
数据类型是 04 ,即该行记录的是一个拓展地址(0x08 0x00 是地址信息,用法是将该地址(0x0800<<16) 后作为基地址
0xF2
校验和,校验和= 0x100 - 累加和
五、参考资料
基于MDK创建纯汇编语言的STM32工程——汇编实现LED闪烁
ARM开发:使用MDK编译stm32简单程序(闪烁LED)