IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MDK-keil安装与使用 -> 正文阅读

[嵌入式]MDK-keil安装与使用

一、Keil的下载与安装

1.keil介绍

Keil 是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供 了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision) 将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果使用C语言编程,那么Keil几乎是不二之选,即使不使用C语言而仅用汇编语言编程,其集成环境强大的软件仿真调试也会令事情事半功倍。

2.keil安装步骤

(1)下载完keil5压缩包,鼠标右键解压。

(2)打开文件,找到“mdk536”,右键“以管理员身份运行”
在这里插入图片描述
(3)点击“Next>>”
在这里插入图片描述
(4)勾选“I agree to all the terms of…”,然后点击“Next>>”
在这里插入图片描述
(5)点击“Browse”,两个都安装到其他盘(不建议c盘),再点击“Next>>”
在这里插入图片描述
(6)四个内容随便填,再点击“Next>>”
在这里插入图片描述
(7)等待安装
在这里插入图片描述
(8)点击“Finish”,结束。

3.keil注册激活

(1)双击打开“keil uVision5”
在这里插入图片描述
(2)点击菜单栏File,然后点击License选项。
在这里插入图片描述
(3)复制左上角的ID号
在这里插入图片描述
(4)在解压文件夹中找到“keygen”,鼠标右键“以管理员身份运行”。
在这里插入图片描述
(5)复制CID中的内容,将其粘贴到①中,然后选择②“Target”选项框中ARM选项,再点击“Generate”,然后复制生成内容
在这里插入图片描述

(6)将其粘贴“New license”中然后点击“Add LIC”。点击“close”,即安装完成!
在这里插入图片描述

4.STM32F10 Pack包的安装

(1)进入keil中,点击“pack installer”组件
在这里插入图片描述
(2)在“device”中点击“STM……”开头的文件,点击“+”号,找到“STM32F1 series”
在这里插入图片描述
(3)在右侧的菜单栏中,找到对应的软件包下载即可。之前已经装过pack,因此显示已安装。
在这里插入图片描述

二、Keil创建工程

1.新建工程

(1)点击“project”-“new μVision project”,之后“Ctrl+s”保存工程。

(2)工程建好后,会弹出“芯片选型”窗口,在此界面下进行芯片选型;
在这里插入图片描述

(3)芯片选型结束后,出现配置窗口,勾选对应选项,点击OK即可;
在这里插入图片描述

2.新建text.s文件

(1)点击“source”,右键“Add new item to…”,新建文件,之后“Ctrl+s”保存文件,文件命名为text.s
注意:一定要以.s结尾,汇编语言,否则会出错
在这里插入图片描述

3.修改配置

(1)生成HEX文件,点击“魔法棒按钮”-“ouput”,将“Create Hex file”选项勾选起来
在这里插入图片描述在这里插入图片描述
(2)修改“Debug”模式为“软件仿真”。依旧点开“魔法棒”-“Debug”,修改为“Use Simulater”。

其中,修改Dialog DLL内容:DARMSTM.DLL;修改Parameter:-p+芯片型号选型
在这里插入图片描述

4.在.s文件中编写代码

(1)写入如下程序:

 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)编译,按菜单栏上的“下载”按钮。
在这里插入图片描述
在这里插入图片描述

(3)调试。
按下菜单栏“D”按钮,进入调试
在这里插入图片描述

------------------------------------------------------------------------
知识充电站
------------------------------------------------------------------------

调试常用按钮介绍:
在这里插入图片描述

序号Value
1将程序复位到主函数开始处
2全速运行程序,运行时不停止
3停止全速运行(在全速运行时激活)
4下一步(语句依次执行)
5下一步(在主函数中按行依次执行,不会进入子函数)
6在进入子函数内部时激活,执行完剩余子函数命令,并进入主函数
7程序运行至光标选中行
8显示/隐藏编译窗口,可以查看C语言编译后对应的汇编语言
9显示/隐藏变量观察窗口,可以查看当前变量值
------------------------------------------------------------------------ 经过单步调试发现:寄存器中所存的值与程序设置的相同。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c82d334a051f4775b6d1f10d14d95ed0.png)

5.分析HEX文件

(1)首先在object文件中找到HEX文件:
在这里插入图片描述
(2)通过记事本的形式打开hex文件,其内容是这样的:

:020000040800F2
:100000000006002031010008390100083B0100080A
:100010003D0100083F010008410100080000000008
:100020000000000000000000000000004301000884
:1000300045010008000000004701000849010008D0
:100040004B0100084B0100084B0100084B01000860
:100050004B0100084B0100084B0100084B01000850
:100060004B0100084B0100084B0100084B01000840
:100070004B0100084B0100084B0100084B01000830
:100080004B0100084B0100084B0100084B01000820
:100090004B0100084B0100084B0100084B01000810
:1000A0004B0100084B0100084B0100084B01000800
:1000B0004B0100084B0100084B0100084B010008F0
:1000C0004B0100084B0100084B0100084B010008E0
:1000D0004B0100084B0100084B0100084B010008D0
:1000E0004B0100084B0100084B0100084B010008C0
:1000F0004B0100084B0100084B0100084B010008B0
:100100004B0100084B0100084B0100084B0100089F
:100110004B0100084B0100084B0100084B0100088F
:100120004B0100084B0100084B0100084B0100087F
:100130000948804709480047FEE7FEE7FEE7FEE77B
:10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
:10015000054A064B7047000041020008990200085A
:100160000000002000060020000200200002002005
:10017000704770477047000080B500F001F880BDFF
:1001800082B041F204000021C4F20200019100910A
:1001900050F8041C41F4803140F8041C50F8041C51
:1001A00001F400310091019901310191009919B9CF
:1001B0000199B1F5A06FF1D150F8041C890354BF27
:1001C0000021012100910099012936D142F200015C
:1001D000C4F202010A6842F010020A600A6822F0C2
:1001E00007020A600A6842F002020A6001680160C0
:1001F00001680160016841F480610160016821F4D7
:100200007C110160016841F4E811016050F8041CA0
:1002100041F0807140F8041C50F8041C8901FBD5A2
:10022000016821F003010160016841F002010160F1
:10023000016801F00C010829FAD102B070470000F2
:1002400080B541F20000C4F202000168002241F0D2
:10025000010101604168CFF6FF0211404160016871
:100260004FF6FF72CFF6F66211400160016821F48B
:1002700080210160416821F4FE0141604FF41F01BB
:100280008160FFF779FF4EF60850CEF200004FF084
:100290000061016080BD00004FF00A004FF00B01CB
:1002A0004FF00C024FF00D0300F009F800F00AF8CF
:1002B00000F00BF8DFF81CE0DFF81CF0FEE74FF071
:1002C000050570474FF0060670474FF007074FF0DF
:0C02D00008087047BF020008CB020008BD
:040000050800029954
:00000001FF

该文件为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为校验和。

三、HEX文件

1.介绍

HEX 文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII 文本文件。在Intel HEX 文件中,每一行包含一 个 HEX 记录 。 这些记录由对应机器语言码和/或常量数据的十六 进 制编码数字组成。

HEX 文件通常用于传输将被存于ROM 或者EPROM 中的程序和数据。大多数EPROM 编程器或模拟器使用HEX 文件。

2.hex文件记录格式

(1)域

Intel HEX由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列::llaaaatt[dd...]cc

每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:

每个Intel HEX记录都由冒号开头.

(2)ll 是数据长度域
它代表记录当中数据字节(dd)的数量。

(3)aaaa 是地址域
它代表记录当中数据的起始地址。

(4)tt 是代表HEX记录类型的域
它可能是以下数据当中的一个:
00 – 数据记录
01 – 文件结束记录
02 – 扩展段地址记录
04 – 扩展线性地址记录

(5)dd 是数据域
它代表一个字节的数据。一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符。

(6)cc 是校验和域
它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。

3.数据记录

Intel HEX文件由任意数量以回车换行符结束的数据记录组成。数据记录外观如下:
:10246200464C5549442050524F46494C4500464C33
其中:
10代表这个记录当中数据字节的数量。
2462 :数据将被下载到存储器当中的地址。
00 :记录类型(数据记录)
464C…464C是数据。
33: 记录的校验和。

四、总结

在创建.s文件时,忘记将该文件拖入工程中,导致在编译时未通过,提示Target not created.之后经过检查以及查阅资料,发现是因为未将文件加入创建的工程中。以后可以直接通过点击“source”,右键“Add new item to…”,新建文件的方式,避免错误的发生!

五、参考文献

1.https://blog.csdn.net/qq_45659777/article/details/120496577

2.https://blog.csdn.net/OverWatcher/article/details/80069438

3.https://blog.csdn.net/weixin_43822014/article/details/108917904

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 21:00:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:04:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码