【工具使用】Keil5软件使用-基础使用篇

一、概述

    本文面向未接触过Keil的新手,如果是职场老手可跳过此篇。为了快速上手,本文会跳过很多细节及解释,如需要了解原理,请移步进阶篇。

二、 软件介绍

    Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
    目前软件对中文的支持不友好,不建议安装网上的一些汉化包之类的。另外建立的工程文件路径也尽量不要存在中文,否则可能会出现一些异常。
演示版本:5.24a

三、名词释义

IDE:Integrated Development Environment,是开发集成环境的意思,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。因为做嵌入式开发的,首先需要有可以编写代码的编辑器,然后需要有把代码转换成机器可执行代码的编译器,有时候可能需要在对应硬件芯片上调试,那就需要有个调试器,为了操作方便,一般会把这些都图形化。这么下来的一整套工具集成在一个应用程序里,就是所谓的IDE,这篇文章介绍的Keil uVision就是IDE的一种。
Keil:其实Keil是个公司名,其旗下开发的软件都以Keil开头命名。目前有Keil MDK-ARM、Keil C51、KeilC166和KeilC251等版本。
uVision:uVision是由keil公司开发的集成开发环境(IDE),可以进行代码编辑,文件管理,程序的编译调试等。
MDK、C51:如果想要开发ARM内核的芯片,需要安装MDK-ARM,如果想要开发51内核的芯片,那就需要安装c51。也就是说,MDK、c51只是Keil针对不同芯片内核开发的不同开发集成环境。
CMSIS:ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。
烧录:烧软件只是一种叫法,来源于最早刻录光盘,因为是用激光讲数据烧在光盘上,所以后来人们把这种不可逆的记录方式称之为烧录。
bin文件:二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件,只是表明它是binary格式。一般来讲是机器代码,汇编语言编译后的结果。
axf文件:axf文件是ARM芯片使用的文件格式,它除了包含bin代码外,还包括了输出给调试器的调试信息,例如每行C语言所对应的源文件行号等。
Hex文件:Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。

四、下载链接

    直接官网下载,用注册机生成Lisence即可,个人用没什么问题,企业用建议购买正版,不然会被查到的。(会有邮件警告到公司老总那去,别问我为什么知道)

五、软件使用

1、软件安装

    这个没什么特殊的,一路next就行。如果是自己用的,一般不建议装在C盘,因为后续芯片包都会默认安装在此目录下,文件会变得很大。

2、下载/安装芯片包

    跟旧版本的Keil不一样,Keil4以前是软件里集成芯片包,也就是只要下载安装完Keil的软件,就有对应的一些芯片可供选择使用。但由于现在软件支持的芯片越来越多,软件的体量也就越来越大,如果把所有芯片包都跟软件打包一起下载,那软件估计得有几百个G。所以为了简洁,Keil把集成环境跟芯片包、例程等东西分开单独下载,具体要用到什么芯片再自己去下载安装对应的芯片包。

  • 在Keil里下载

    点击"Pack Installer",也就是这个图标芯片包安装,第一次打开可能会很慢,因为要从官网自动更新所有芯片包的信息。这时候很坑的一个点是,你不更新,可能又没法找到你想要的芯片,所以在信息更新完前,只能乖乖地等它更新完。然而这种国外链接,又时不时给你断一下。
在这里插入图片描述
    在更新完后,在左边的窗口中找到想要安装的芯片型号,可以选择整个系列(或具体芯片,结果是一样的),这里以STM32G071为例。然后在右边窗口中,找到"Device Specific"里面"Keil:STM32G0xx_DFP"这一项,点击按钮"Install"下载安装。(同样的,网络卡的时候下载很慢,还经常断开链接)
在这里插入图片描述

    等到下载安装完成后(右下角有进度条),“Install"键会变成"up to date”,这时候说明安装成功。

  • 在官方网站下载

    前面那种方法在很多时候都是行不通的,不是网络不好就是网络不好。所以可以通过另外一个方式更新芯片包,那就是先从官网提前下载好芯片包,再点击安装。
官网链接:https://www.keil.com/dd2/Pack/
    同样,先找到对应的芯片(这里展开时可能不会显示所有芯片,找不到对应芯片时,点击下面"View all in family"展示所有芯片),选择"xxxxx_DFP",点"Download Recommended Pack"即可下载。
在这里插入图片描述

    这种方式有个好处就是即使在官网无法下载时,也可以假借他人之手去下载。为了防止小伙伴们在官网下载也出现网络中断的情况,这里提供STM32常用系列的芯片包供下载使用(版本可能不是最新的,可以凑和着用)。

3、新建工程

    点击"Project"->"New Project"新建工程,在弹出的窗口中选择工程要保存的路径,设置好工程名称,点击保存。由于是新建工程,软件会默认弹出芯片选择框,让你选择当前使用的单片机型号,这里我们选择STM32G071RBTx,然后是选择接口标准,这里我们选择CMSIS。
在这里插入图片描述
    做完以上几步,一个简单的工程就新建完成了。由于时间关系,这里我们使用了超能力——STM32CubeMX配置并生成了一个工程。这里面实现了调试口的初始化及一个GPIO口的初始化,也就是下来我们要用到的LED灯所使用的PA5口。

4、新建/添加文件

    有了工程还不够,就像建房子一样,这时候只是把钢筋水泥弄好,做出个房子的外型,离真正可以居住的温馨小屋还差亿点点距离。所以这时候就得加点核心进来,也就是我们的源代码。
在这里插入图片描述

    因为这里有演示使用的是STM32CubeMX生成的工程,所以里面已经添加好一些初始化的代码文件,我们现在要做的就是把闪灯的逻辑文件也添加进来。由于时间关系,闪灯的代码文件和逻辑都已经准备好了。
在这里插入图片描述

5、配置工程

    为了可以正常地跟开发板及烧录器进行匹配,这里我们还需要对工程进行一些配置。

  • 包含头文件路径

    前面只是添加了必要的核心代码文件,这时候这些文件还是属于各自管各自的。虽然代码里可能有在文件A里引用了B文件(include进行包含),但实际Keil这个软件并不知道A文件B文件各自放在什么地方,要去哪里找。所以需要我们告诉它每个文件的路径。由于.c文件是直接添加到工程里的,此时文件路径就已经包含进来,但是对于.h文件,软件还不清楚路径在哪,所以我们需要手动添加.h所在的路径。
在这里插入图片描述

  • 选择烧录器

    这里可以选择在线调试或离线仿真两种方式,如果有开发板,建议选在线调试直接在板子上进行实验。选择了在线调试后,需要选择烧录器的类型,这里我们选择ST-Link,也就是开发板上自带的这个烧录器的类型。
在这里插入图片描述

  • 生成Hex

    有些场合下,只能通过Hex文件进行烧录,这时候就需要在工程里勾选"Create HEX File",这样在编译之后工程会自动生成Hex的可执行文件。
在这里插入图片描述

  • 选择烧录后复位

    选择"Reset and Run"可以在软件烧录后立即运行,不然会发现一个现象,就是烧完后程序不会跑,需要手动复位后才能跑起来。
    为了防止出现些奇奇怪怪的问题,这里建议把"Erase Full Chip"勾选上。
在这里插入图片描述

6、编译

    添加完文件,配置好工程后,我们就可以点编译,这时候软件会自动调用编译器、链接器等一步步把源代码(.c.h文件),转换成机器可识别的.axf文件(包含二进制的机器码和一些调试信息),如果勾选了生成Hex,还会生成十六进制的.Hex可执行文件。
在这里插入图片描述

    注:如果此时出现了Error信息,则无法编译通过,需要修改源代码直到编译结果0-Error,才可以正常生成可执行文件。如果出现Warning信息,可视情况进行处理,Warning信息不影响编译结果,但建议多关注下这些Warning信息,很多Bug就隐藏在里面。

7、烧录

    经过前面的步骤,我们已经得到了机器中识别的执行文件.axf。并且工程也已经配置了对应的烧录器及芯片,此时先连接烧录器到开发板上,点击"Project"->“Optinos for Target ‘xxx’”->“Debug”->"Setting"查看当前是否已正常连接。如果已正常连接,点击,可以看到左下方有个烧录的进度条。
在这里插入图片描述

    烧录完成后,我们看下板子,灯开始正常闪,说明程序已经正常跑起来了。

在这里插入图片描述

8、调试

  • 在线调试

    在有开发板的情况下,可以把软件烧进单片机中,并使用烧录器对运行的程序进行实时监控。可查看当前单片机内核、外设、ROM、RAM的变化情况,并且Keil提供了一套比较友好的人机交互界面,可以帮助快速定位查找问题。

  • 离线仿真

    如果是没有开发板的情况,想要大致跑下自己写的逻辑有没有问题,可以使用离线仿真这种方式。但如果逻辑中涉及跟单片机外设或开发板外围电路的一些配合,则不适合使用这种方式调试。

六、注意事项

  1. 工程路径下不可以有中文,否则可能编译或调试时会有影响。
  2. 工程文件路径不可过长,这个软件对路径的识别是有长度限制的,当文件的总路径长度超过一定限制后,编译时可能会报无法查找到相关文件。

七、相关链接

    Keil5软件使用-进阶工程配置篇、Keil5软件使用-进阶调试篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/339145.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Git不走弯路】(二)提交与分支的本质

1. 前言 提交与分支是Git中两个基本对象,对初学者而言需要花些时间理解。正如我们之前所说,计算机中很多新概念是新瓶装旧酒。计算机技术来源于需求,服务于需求,需求是计算机技术的出发点和落脚点。梳理清楚工程实践中&#xff0…

【开源】基于JAVA的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

2023.1.21 关于 Redis 主从复制详解

目录 引言 单点问题 分布式系统 ​​​​​​​​​​​​​​主从模式 配置 Redis 主从结构 断开主从关系 切换主从关系 补充知识点一 只读 网络延迟 拓扑结构 一主一从 一主多从 树形主从结构 主从复制的基本流程 数据同步 replicationid offset pzync 运…

transdata笔记:手机数据处理

1 mobile_stay_duration 每个停留点白天和夜间的持续时间 transbigdata.mobile_stay_duration(staydata, col[stime, etime], start_hour8, end_hour20) 1.1 主要参数 staydata停留数据(每一行是一条数据)col 列名,顺序为[‘starttime’,…

终极解决Flutter项目运行ios项目报错Without CocoaPods, plugins will not work on iOS or macOS.

前言 最近在开发Flutter项目,运行ios环境的时候报错没有CocoaPods,安卓环境可以正常运行,当时一脸懵逼,网上搜索了一下,有给我讲原理的,还有让我安装这插件那插件的,最终把电脑搞得卡死&#x…

代码随想录算法训练DAY25|回溯2

算法训练DAY25|回溯2 216.组合总和III 力扣题目链接 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n …

Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

目录 1.Docker安装与启动 1.1 安装Docker 1.2 设置ustc的镜像 1.3 Docker的启动与停止 2.常用命令 2.1 镜像相关命令 2.1.1 查看镜像 2.1.2 搜索镜像 2.1.3 拉取镜像 2.1.4 删除镜像 2.2 容器相关命令 2.2.1 查看容器 2.2.2 创建与启动容器 2.2.3 停止与启动容器 2.…

分享flask_socketio配置时遇到的一些问题

flask_socketio 1.前言 flask_socketio应用启动后,在控制台中,存在着flask_socketio这些烦人的log 一堆的get和post几秒一个让我什么都看不清,因此想要关掉log 结果没想到,找了很多办法半天去不掉flask_socketio的log 试过了…

互联网未来的 3 个愿景

互联网可能是现代技术最伟大的创造,而且它是一项正在进行中的工作。其持续发展的核心是对互联网未来发展的三种不同愿景。在本文中,我们将探讨指导互联网技术和架构未来的三个想法:Web 3.0、Web3 和语义 Web。 Web 3.0:互联网的未…

自然语言处理研究的内容

一.基础技术 1.1 词法分析 词法分析(Lexical Analysis),也称为词法扫描或扫描器,是自然语言处理(NLP)中的基础步骤之一,用于将输入的文本分割成词法单元(Token)。词法单…

Proxmox VE 8 试装Oracle 23c

作者:田逸(formyz) Oracle 当前的最新版本是23c,虽然官方网站下载不了它的正式版本,但是却提供了一个性能受限的免费版本“Oracle Database 23.3 Free”(存储容量受限、内存使用受限)。这里就只…

【llm 使用llama 小案例】

huggingfacehttps://huggingface.co/meta-llama from transformers import AutoTokenizer, LlamaForCausalLMPATH_TO_CONVERTED_WEIGHTS PATH_TO_CONVERTED_TOKENIZER # 一般和模型地址一样model LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) tokenize…

CGLIB动态代理(AOP原理)(面试重点)

推荐先看JDK 动态代理(Spring AOP 的原理)(面试重点) JDK 动态代理与 CGLIB 动态代理的区别 JDK 动态代理有⼀个最致命的问题是其只能代理实现了接⼝的类. 有些场景下,我们的业务代码是直接实现的,并没有接⼝定义.为了解决这个问…

一.初识Linux 1-3操作系统概述Linux初识虚拟机介绍

目录 一.初识Linux 1.操作系统概述 计算机组成 硬件: 软件: 操作系统: 操作系统工作流程 操作系统作用 常见的操作系统 PC端: 移动端:(掌上操作系统) 一.初识Linux 2.Linux初识 linu…

HTML 入门手册(一)

目录 HTML 1-基础语法 单标签 双标签 整体结构 2-标题和水平线 标题 水平线 3-段落和换行 段落 换行 4-列表 无序列表 有序列表 嵌套列表 5-div和span div span 6-格式化标签 粗体 斜体 下划线中划线 上标和下标 7-超链接(a标签) 链接到URL 链接到本…

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…

nginx基于IP的多虚拟主机

结合这篇文章一起&#xff1a;nginx虚拟主机-CSDN博客文章浏览阅读63次。虚拟主机指的就是一个独立的站点配置&#xff0c;是nginx默认支持的一个功能&#xff0c;它能够有自己独立的域名&#xff0c;独立的ip&#xff0c;独立的端口配置&#xff0c;能够配置完整的www服务&…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心&#xff08;8080端口&#xff09; 2.2 资源服务中心&#xff08;8081端口&#xff09; 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0&#xff08;开放授权 2.0&#xff09;是一个开放标准&#xff0c;用于授权第三方应用程序…

【Kaggle】泰坦尼克号生存预测 Titanic

文章目录 前言案例背景数据集介绍加载数据集探索性数据分析&#xff08;EDA&#xff09;可视化特征和目标值之间关系缺失值分析 数据预处理数据清洗缺失值处理去除噪声并且规范化文本内容 数据转换 数据划分建模逻辑回归模型决策分类树模型随机森林模型梯度提升树模型 预测LR 完…

imgaug库图像增强指南(34):揭秘【iaa.Clouds】——打造梦幻般的云朵效果

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…