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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> keil安装与汇编调试 -> 正文阅读

[嵌入式]keil安装与汇编调试

Keil5下载安装与配置

下载地址

1、Keil5:

官网下载地址:https://www.keil.com/download/product/

2、Keil注册器:

链接:https://pan.baidu.com/s/1XFTEdhNFIx4HuZfYKxrc6g
提取码:4869

3、stm32包

链接:https://pan.baidu.com/s/1Pe8ppEkdTWRvZhPErhDTSQ
提取码:4869

点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。

Keil注册

1、keil5以及注册器安装完成后,关闭杀毒软件,然后以管理员身份运行keil5。

2、在file->license management中,找到CID,并复制下来。

3、关闭声音,运行注册器,选择arm并输入刚刚复制的CID,生成一段代码

4、将这段代码输入license management的LIC中,点击add lic

创建项目

新建项目

一、点击project -> new project

在这里插入图片描述

选择一个路径来存放你的项目文件,并输入你的项目文件名称,这里我写的是project。

点击保存。

在这里插入图片描述

二、在弹出的页面中,选择你自己所用的芯片。我选用的是野火的指南者,因此选择的是对应的STM32F103VE。

在这里插入图片描述

三、芯片选择完成后选择运行环境,勾出图中框的部分即可。

勾选后选择ok,项目就构建好了。

向项目中添加文件

一、新建文件

在这里插入图片描述

点击左上角的新建文件,待文件出现后点击保存,将文件保存在项目路径下。

因为这里要编写汇编语言,因此文件后缀名是.s。以后用c语言开发的话一般用.c或者.h文件。

二、将文件加入项目

在这里插入图片描述

右键点击项目里的Source Group 1,选择添加现有文件(图中所框住的部分)

然后在弹出的页面中选择刚刚保存的.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

这段代码的功能是往寄存器R0-R8中填入数据。

在这里插入图片描述

二、配置

在编写好代码后,点击上方的魔术棒图标,如图选择output并勾选生成hex文件。

再点击debug,如图所示,选择使用左边的仿真器,并填写好自己的设备信息。

在这里插入图片描述

我使用的野火指南者,就按图上显示的那样填写。不同的板子要填写的内容也不一样。

三、开始调试

在func3的末尾打上一个断点,然后点击调试按钮,如图所示:

在这里插入图片描述

点击调试按钮后进入调试界面。

在这里插入图片描述

在界面的左边是寄存器的内容,当进行调试的时候,左边的寄存器内容会发生变化。右边上面是执行的指令,下面是源代码。

点击左上角的运行或者单步调试,就可以看见左边的寄存器内容发生了变化。

在这里插入图片描述

随着程序的运行,寄存器中的内容开始发生变化。

hex文件

在选择生成hex文件后,编译项目会生成一个hex文件。这个hex文件下载到单片机中即可运行对应的程序。

至于这个hex文件里面又是什么呢

以上面的代码为例,它生成的hex文件内容如下:

:020000040800F2
:100000000006002031010008390100083B0100080A
:100010003D0100083F010008410100080000000008
:100020000000000000000000000000004301000884
:1000300045010008000000004701000849010008D0
:100040004B0100084B0100084B0100084B01000860
:100050004B0100084B0100084B0100084B01000850
:100060004B0100084B0100084B0100084B01000840
:100070004B0100084B0100084B0100084B01000830
:100080004B0100084B0100084B0100084B01000820
:100090004B0100084B0100084B0100084B01000810
:1000A0004B0100084B0100084B0100084B01000800
:1000B0004B0100084B0100084B0100084B010008F0
:1000C0004B0100084B0100084B0100084B010008E0
:1000D0004B0100084B0100084B0100084B010008D0
:1000E0004B0100084B0100084B0100084B010008C0
:1000F0004B0100084B0100084B0100084B010008B0
:100100004B0100084B0100084B0100084B0100089F
:100110004B0100084B0100084B0100084B0100088F
:100120004B0100084B0100084B0100084B0100087F
:100130000948804709480047FEE7FEE7FEE7FEE77B
:10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
:10015000054A064B70470000A50200087901000817
:100160000000002000060020000200200002002005
:1001700070477047704700004FF00A004FF00B01C6
:100180004FF00C024FF00D0300F009F800F00AF8F0
:1001900000F00BF8DFF81CE0DFF81CF0FEE74FF092
:1001A000050570474FF0060670474FF007074FF000
:1001B000080870479F010008AB01000810B500F067
:1001C00001F810BD0CB50020019000903348006884
:1001D00040F480303149086000BF3048006800F4C6
:1001E000003000900198401C0190009818B90198C7
:1001F000B0F5A06FF1D12948006800F4003010B1CB
:100200000120009001E0002000900098012843D1D7
:100210002348006840F01000214908600846006843
:1002200020F0030008600846006840F00200086003
:100230001A484068194948600846406848600846BE
:10024000406840F4806048600846406820F47C10B4
:1002500048600846406840F4E81048600846006876
:1002600040F08070086000BF0C48006800F000702B
:100270000028F9D00948406820F003000749486089
:100280000846406840F00200486000BF03484068EC
:1002900000F00C000828F9D10CBD0000001002404D
:1002A0000020024010B51348006840F001001149D9
:1002B000086008464068104908400E4948600846F2
:1002C00000680E4908400B4908600846006820F4A1
:1002D000802008600846406820F4FE0048604FF423
:1002E0001F008860FFF76AFF4FF000600449086054
:1002F00010BD0000001002400000FFF8FFFFF6FEF6
:0403000008ED00E024
:040000050800017975
:00000001FF

对于如何理解这些数据,我参考了这篇博客:https://blog.csdn.net/MQ0522/article/details/121648987

正如这篇博客里所说,文件里的每一行都是一条数据记录,以冒号开头,以换行结尾。而数据则使用十六进制的ASCII码表示。

对于每一条记录,有六个部分,从左往右依次是:

冒号(1个字符),数据长度(一个字节),起始地址(两个字节),数据类型(一个字节),数据(字节数是数据长度值的两倍),校验和(最后一个字节)

  • 数据长度N:表示本行的数据长度,采用十六进制,范围是0x00~0xff

  • 起始地址:本行数据的起始地址,16进制:0~FFFF

    注意,当数据类型为0x01~0x05时,起始地址为0000

  • 数据类型:一个字节表示,有以下几种情况:

    00:表示记录数据

    01:表示文件的结束

    02:标识扩展段地址

    03:标识开始段地址

    04:标识扩展线性地址

    05:标识开始线性地址

  • 数据:

    本条记录的主体,数据长度为N

  • 校验和:用0x100-累加和(前面所有十六进制数之和)表示


参考资料

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 21:00:24 
 
开发: 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年12日历 -2024/12/28 2:10:35-

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