【Keil】 Keil的搭建并配置,并编写简单的汇编程序

2023-05-16

Keil的搭建并配置

  • 一、配置环境
    • 1.MDK的安装
      • 1.1 MDK5下载
      • 1.2安装
    • 2、安装stm32 pack
  • 二、Mdk使用配置技巧
    • 1.设置tab键为2个空格
    • 2.代码自动补齐
    • 3.语法动态错误检测
    • 4.右边距指示
  • 三、编写 一个简单的汇编程序
    • 1、创建新工程
    • 2、添加文件
    • 3、汇编程序
    • 4、分析编译生成的Hex文件
  • 五、参考资料

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下载

① keil官网网址下载

② 百度网盘分享下载
提取码:8520

1.2安装

  1. 下载后,请点击:mdk_xxx.exe,安装MDK软件

在这里插入图片描述
2.点击NEXT在这里插入图片描述3,勾选并点击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)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Keil】 Keil的搭建并配置,并编写简单的汇编程序 的相关文章

  • 【STM32】标准库与HAL库对照学习教程十四--CAN总线

    STM32 标准库与HAL库对照学习教程十四 CAN总线 一 前言二 准备工作三 CAN协议3 1 简介3 2 CAN物理层3 2 1 闭环总线网络3 2 2 开环总线网络 3 3 差分信号3 3 1 简介3 3 2 CAN总线上的差分信号
  • 【CANopen】CANopen总线讲解

    CANopen总线 一 前言二 CANopen概述2 1 CANopen网络模型2 2 CANopen常见规范 三 CANopen对象字典四 CANopen通讯标识符五 CANopen协议概述5 1 CANOpen协议报文分类5 2 CAN
  • 51单片机中断的调用寄存器组(PSW)的作用,以及汇编堆栈的作用,堆栈指针的SP的使用方法,RAM的运行和ROM在单片机具体运行和C语言的优势和中断,定时器基础知识(上)

    一 xff0c 堆栈在汇编的作用 xff0c 以及PUSH ACC 和 PUSH PSW 通过最简单的8051单片机RAM的分配可知 xff0c 单片机从烧程序到达到一定的工作过程 首先明白为什么要引如 烧 写的过程 我们知道一般我说存储器
  • 小端序与大端序

    今天在写逆向题目时遇到的一个知识点 字节顺序 xff08 维基百科 xff09 字节顺序 xff0c 又称端序或尾序 xff08 英语 xff1a Endianness xff09 xff0c 在计算机科学领域中 xff0c 指电脑内存中或
  • 超声波测距模块(HC-SR04模块)特点及使用介绍

    超声波测距模块 xff08 HC SR04模块 xff09 特点及使用介绍 前言一 超声波测距模块 xff08 HC SR04模块 xff09 外观二 原理图三 相关参数讲解1 参数2 测量范围3 计算公式4 优点5 产品特性 xff08
  • Qt基础简单知识 信号与槽与三大基类

    Qt基础简单知识 信号与槽与三大基类 学习Qt记录一下 xff0c 大致以下内容 xff1a 1 Qt Creator窗口基类 2 信号与槽 1 Qt Creator窗口基类 Creator默认三种基类 xff1a 1 xff09 QMai
  • Android应用程序开发期末大作业(2)

    xff08 3 xff09 用imageView和imagebutton及activity在界面上实现图片浏览 新建android项目如 AI03 xff0c 在项目的 AI03 src com example ai03 MainActiv
  • ROS中使用A星算法进行路径规划

    ROS中使用A星算法进行路径规划 前言python编写A星算法描述具体实现 ROS结合A星算法描述具体实现 实现结果 前言 由于本人这学期修了一门 智能工程 的课程 xff0c 课程的大作业要求大家自主编写机器人导航程序 xff0c 包括
  • 攻防世界 web练习区

    目录 view source robots backup cookie disabled button weak auth simple php get post xff referer webshell command execution
  • 网络安全编程基础--使用结构体数组完成信息录入

    实验1 xff1a C语言基础实验 目录 实验1 xff1a C语言基础实验 实验步骤分析 xff1a 1 定义结构体 xff1a 2 信息录入 3 信息修改 4 信息展示 5 主函数编写 结果展示 xff1a 源代码 xff1a 实验设备
  • 服务端和客户端通信-TCP(含完整源代码)

    简单TCP通信实验 目录 简单TCP通信实验 分析 1 套接字类型 2 socket编程步骤 3 socket编程实现具体思路 实验结果截图 程序代码 实验设备 xff1a 目标系统 xff1a windows 软件工具 xff1a vs2
  • 汇编语言--实验四

    实验名称 xff1a BX 和loop的使用 一 xff1a 实验目的 学会使用 bx 和loop 使用debug练习一些简单的编程 练习使用debug调试汇编程序的方法 二 xff1a 实验内容及步骤 内容 xff1a xff08 1 x
  • 汇编语言--实验七

    实验名称 xff1a 寻址方式在结构化数据访问中的应用 一 xff1a 实验目的 学会寻址方式在结构化数据访问中的应用 xff1b 利用前面所学知识熟悉编程技巧 二 xff1a 实验内容及步骤 内容 xff1a xff08 1 xff09
  • 汇编语言--实验九

    实验名称 xff1a 根据材料编程 目录 实验名称 xff1a 根据材料编程 一 xff1a 实验目的 二 xff1a 实验内容及步骤 内容 xff08 1 xff09 步骤 xff08 1 xff09 结果 xff08 1 xff09 三
  • Visual Studio 2022 C++开发 (Win)配置教程

    前言 本文将讲解如何在Window系统下配置Visual Studio 2022版本的C 43 43 开发环境 步骤 下载并且安装Visual Studio Tools xff08 1 xff09 下载 Visual Studio Tool
  • template < class T> ,map和vector用法——恶补c++

    部分目录 template lt class T gt 是什么找到各素数因子map数组下用法map遍历map元素的默认值 vector 用法 template lt class T gt 是什么 template lt class T gt
  • 停车场寻车系统(识别车牌,手机app查询相关信息)

    停车场寻车系统 文章目录 停车场寻车系统前言一 手机app二 车牌识别三 数据查询总结 停车场寻车系统 前言 上个星期用了一周左右做了一个停车场寻车系统的项目 xff0c 可以识别车牌 xff0c 通过手机app查询车辆信息 一 手机app
  • K210+MLX90614红外测温

    红外测温 文章目录 红外测温前言一 MLX90614二 使用步骤总结 前言 K210随便找一个都行 一 MLX90614 这个模块之前的博客有介绍 xff0c 他是用IIC通信的 模块就不过多介绍了 xff0c 之间看代码吧 import
  • PHP mysql_connect()连接-已淘汰

    1 首先在mysql命令控制台新建数据库 mysql gt create database test Query OK 1 row affected 0 04 sec mysql gt use test Database changed m
  • STM32使用红外测温

    红外测温 文章目录 红外测温前言一 原理二 STM32代码1 MLX90614 c2 MLX90614 h 总结 前言 一 原理 红外测温的原理可以直接去看卖家的手册 xff0c 手册多余的话太多了 xff0c 知道他是IIC通信的就行了

随机推荐

  • Arduino——PAJ7620手势识别模块

    手势识别模块 文章目录 手势识别模块前言一 安装PAJ7620库二 代码 前言 在用arduino驱动这些模块得时候 xff0c 方法很简单 xff0c 先去管理库中找这个库 xff0c 如果有这个库 xff0c 然后下载这个库 xff0c
  • Arduino——正点原子sim800c模块

    sim800c 文章目录 sim800c前言一 arduino代码 前言 最近要做一个项目需要用到sim800c xff0c 就用arduino驱动一下吧 xff0c 用的是正点原子的sim800c 使用的时候最好使用12v1A供电 xff
  • Arduino——野火GPS模块

    GPS模块 文章目录 GPS模块前言一 Arduino代码 前言 手上还有一个GPS xff0c 用arduino做模块很方便 xff0c 打算和短信模块结合 xff0c 短信模块上次已经使用完成了 xff0c 这次学习一下GPS模块 看模
  • Arduino——GY39大气压、温湿度、光照模块

    GY39模块 文章目录 GY39模块前言一 模块介绍二 arduino代码 前言 前几天买东西的时候买了一个GY39 xff0c 这个模块集成了温湿度 xff0c 大气压 xff0c 海拔 xff0c 光照一体 xff0c 使用起来很方面
  • Arduino通过NRF24L01实现双机无线通信

    双机无线通信 文章目录 双机无线通信前言一 接线二 Arduino代码1 主机2 从机 总结 前言 无线通信对于做各种项目来说都很加分 xff0c 今天使用这个nrf模块进行无线通信 我原本是想用两个蓝牙的 xff0c 但是蓝牙有个缺点 x
  • STM32+ESP8266+机智云+DHT11数据上传

    机智云 文章目录 机智云前言一 工程的修改二 数据的上传1 标识符2 数据处理3 数据上传 三 app控制 前言 今天搞了一下机智云 xff0c 就想把温湿度发到app上去 xff0c 然后能够控制灯的开关 之前从来没有用过这个玩意 xff
  • 数据结构——线性结构(二)

    数据结构 文章目录 数据结构前言一 线性结构1 线性表2 线性表的特点 二 线性结构的存储形式1 顺序结构2 链式结构 前言 很早之前提到了数据结构 xff0c 上一篇博客简单介绍了什么是线性结构 xff0c 这篇博客简单做一个补充 常见的
  • 数据结构——顺序表(三)

    数据结构 文章目录 数据结构一 什么是顺序表二 顺序表的创建1 静态顺序表2 动态数据表 三 顺序表的初始化 销毁四 顺序表的插入1 尾插2 头插3 任意插入 总结 一 什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线
  • PHP new mysqli()连接

    1 首先在mysql命令控制台新建数据库 mysql gt create database test Query OK 1 row affected 0 04 sec mysql gt use test Database changed m
  • 数据结构——链表(五)

    数据结构 96 文章目录 数据结构前言一 什么是链表二 实现单链表1 单链表的结构2 单链表的初始化3 单链表的插入4 遍历链表5 链表长度 总结 前言 接下来学习一下链表 xff0c 链表比数组用的更多 一 什么是链表 概念 xff1a
  • 数据结构——双向循环链表(八)

    数据结构 文章目录 数据结构前言一 双向循环链表初始化二 双向循环链表的插入遍历 三 双向链表的删除总结 前言 双向循环链表用的次数是最多的 xff0c 下面我们看一下双向循环链表的增删改查 一 双向循环链表初始化 双向循环链表不能出现NU
  • 数据结构——栈(九)

    数据结构 文章目录 数据结构前言一 栈的介绍二 栈的实现1 栈的结构2 栈的初始化3 进栈4 出栈5 栈的判断6 取栈顶元素7 栈的清空8 栈的销毁 总结 前言 栈是一种特殊的线性表 xff0c 只允许在固定的一端进行插入和删除元素的操作
  • 数据结构——队列(十)

    数据结构 文章目录 数据结构一 什么是队列二 队列的实现1 队列的结构2 队列的初始化3 入队4 出队6 队头队尾的获取 总结 一 什么是队列 队列 xff1a 只允许在一端进行插入数据操作 xff0c 在另一端进行删除数据操作的特殊线性表
  • ESP8266通过MQTT协议连接onenet云平台

    中国移动onenet平台 文章目录 中国移动onenet平台前言一 onenet平台二 ESP82661 完整代码2 联网代码3 连云代码4 数据处理 总结 前言 最近在弄onenet平台 xff0c 用arduino结合esp8266 x
  • Arduino串口提取数字(整型和浮点型)

    数据提取 文章目录 数据提取前言一 提取整型数据二 提取浮点型数据 前言 之前需要用32和ESP进行通信上传数据 xff0c 一直都用的都是数据上传然后处理成整型数据 xff0c 今天需要处理成浮点型数据所以就查了一下 xff0c 于是就记
  • vins-fusion环境配置、安装与测试

    本文主要介绍如何搭建vins fusion的运行环境 xff0c 以及解决vins fusion编译运行时遇到的环境冲突问题 xff0c 并在此基础上实现例程的运行 目录 一 安装OpenCV 3 4 111 1 配置依赖环境1 2 下载O
  • JS和JQuery监听滚动条事件

    网上查了一下 xff0c 找到两种js监听滚轮事件的方法 xff08 1 xff09 window onscroll 61 function xff08 2 xff09 document addEventListener 34 onscro
  • STM32使用中断及串口通信

    1 中断模式编程控制LED 采用中断模式编程 xff0c 当开关接高电平时 xff0c LED亮灯 xff1b 接低电平时 xff0c LED灭灯 单片机除了基本的连线外 xff0c 我们另外只接一只LED灯 使用外部中断的基本步骤如下 x
  • 用opencv打开图片及视频

    用opencv打开图片及视频 1 opencv的安装 参考文章http t csdn cn QO7dr 2 用opencv打开图片 建立code文件夹存放代码 xff0c 然后打开文件夹创建test1 cpp文件 在test1 cpp文件里
  • 【Keil】 Keil的搭建并配置,并编写简单的汇编程序

    Keil的搭建并配置 一 配置环境1 MDK的安装1 1 MDK5下载1 2安装 2 安装stm32 pack 二 Mdk使用配置技巧1 设置tab键为2个空格2 代码自动补齐3 语法动态错误检测4 右边距指示 三 编写 一个简单的汇编程序