【STM32】MDK安装

1 MDK

历史背景

Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。

在这里插入图片描述

Keil公司在2005年被ARM公司收购。

MDK界面

在这里插入图片描述

描述

MDK就是微控制器开发套件的意思。
Keil称之为Keil公司。

2 软件环境安装

2.1 MDK安装步骤中重点操作

1.双击下载好的“MDK531.exe”安装程序。

在这里插入图片描述

2.在弹出的欢迎安装界面,点击【Next >>】。

在这里插入图片描述

3.为Core(核心程序)和Pack(库函数包)选择指定的安装路径,默认即可,点击【Next >>】。

在这里插入图片描述

安装中…

在这里插入图片描述

4.点击【Finish】按钮,MDK核心程序完毕。

在这里插入图片描述

5.在弹出的库函数包安装界面,点击【OK】按钮关闭欢迎界面。

在这里插入图片描述

6.电脑连接上网络后,库函数包安装界面会自动更新库函数包描述信息。

在这里插入图片描述

7.当库函数包信息更新完毕后,根据当前所用的芯片去安装对应的库函数包。例如当前所用的芯片为“STM32F429IGTx”,在Devices标签页选中“STMicroelectronics”并展开,再选中“STM32F4 Series”,在右侧的Packs标签页选择目前最新的库函数包版本(2.15.00)进行安装。

在这里插入图片描述

8.安装库函数包的过程在底部的状态栏显示安装进度。

在这里插入图片描述

2.2 官网下载库函数包

1.直接到MDK官网下载,优点速度快。

在这里插入图片描述

库函数是芯片支持包,不同的芯片对应不同的库函数,例如Keil.STM32F4xx_DFP.2.1.5.pack,专门对应STM32F4系列的芯片。

2.双击运行“Keil.STM32F4xx_DFP.2.1.5.pack”,再点击【Next >>】执行安装。

在这里插入图片描述

3.安装中…

在这里插入图片描述

4.安装完毕。

在这里插入图片描述

3 .工程创建

  1. 在菜单栏”Project”,在弹出的下拉菜单,选择“New uVision Project”。

在这里插入图片描述

2.在弹出的对话框,填写工程的名字,例如工程名字为project。

在这里插入图片描述

  1. 为保存的工程,选择对应的芯片。

在这里插入图片描述

在这里插入图片描述

4.为当前工程,添加相应的库函数。

在这里插入图片描述

如果出现黄色提示,这个时候要看它的错误输出信息,它会告诉我们如何操作!

在这里插入图片描述

5.若库函数添加成功,则显示当前工程目录树。

在这里插入图片描述

在这里插入图片描述

专业名词

  • CMSIS,详细英文“Cortex MicroController Software Interface Standard”,翻译为Cortex微控制器软件接口标准。

六、添加main.c文件

  1. 在当前工程目录下,先创建main.c

在这里插入图片描述

  1. 右键点击工程目录下的user,在弹出的右键菜单,选择“Add Existing Files to Group ‘user’”。

在这里插入图片描述

  1. 在弹出的对话框,选中“main.c”文件,点击【Add】按钮

在这里插入图片描述

  1. 在工程目录树的user目录,能够看到main.c文件。

在这里插入图片描述

七、文本编辑器配置

  1. 在菜单栏“Edit”,在弹出的下拉菜单,选择“Configuration”。

在Editor标签页,里面的“Encoding”选择为“Chinese”;Tab Size选择为4,代表按下Tab键的时候,就默认输入4个空格。

在这里插入图片描述

​ 添加自动补全功能,取消“Dynamic Syntax Checking”。

在这里插入图片描述

勾选“Symbols after 3 Characters”自动弹出可选的符号(函数名、变量名、宏定义名)。

在这里插入图片描述

八、目标平台配置

  1. 点击“Options for Target”按钮,进入目标平台配置标签页。

在这里插入图片描述

  1. 勾选生成输出Hex文件,该Hex文件在串口烧录程序的时候用到!

在这里插入图片描述

2.Define:添加“USE_STDPERIPH_DRIVER”,目的使用ST官方提供的库函数;代码优化等级推荐勾选为“Level 2(-O2)”,利于程序运行速度提高和体积减少。

在这里插入图片描述

九、程序下载

在这里插入图片描述

  1. 下载前,请确保j-link仿真下载器已经正确连接到开发板的SWD接口,确保micro usb线是数据线,而不是充电线。

.连接示意图

在这里插入图片描述

在这里插入图片描述

  1. 下载前,请确保j-link的驱动已经安装好,若没有安装好,请安装“Setup_JLinkARM_V415e.exe”。

在这里插入图片描述

  1. 进入平台配置选项,切换到“Debug”标签页,然后按照下图选中“J-Link/J-TRACE Cortex”,接着点击“Settings”按钮。

在这里插入图片描述

  1. 在“port:”选中“SW”,然后在“SW Device”显示框中能够看到设备名称,就代表说电脑能够识别到开发板的芯片。

在这里插入图片描述

  1. 在“Flash Download”中,勾选“Reset and Run”,这样下载程序后,程序才会自动运行。

在这里插入图片描述

  1. 点击“LOAD”按钮,程序就会下载到开发板。

在这里插入图片描述

  1. 点击“LOAD”按钮,程序就会下载到开发板。

注意1:

若在烧录程序过程中,F407存在BUG的缘故,会出现该提示如下图:

在这里插入图片描述

1.检测JLink引脚是否正确连接到开发板。

2.若JLink引脚正确连接到开发板,请按照如下步骤执行:

1)长按开发板复位键

2)点击“LOAD”按钮

3)等待1.5秒后,松开开发板复位键

注意2:

若在烧录程序过程中,出现以下“Cannot Load Flash Device Description!”,如下图。

在这里插入图片描述

1.进入Flash Download标签页,点击【Add】按钮。

在这里插入图片描述

2.选中“STM32F4xx 512kB Flash”,,点击【Add】按钮。

在这里插入图片描述

3.最后点击【确定】按键。

在这里插入图片描述

注意3:

在这里插入图片描述

十、另一种工程模板

1.新建工程文件夹demo,并在该目录下创建以下文件夹。

在这里插入图片描述

2.进入库函数包目录,例如路径:C:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\1.0.8\Device\StdPeriph_Driver,该目录详细如下:

在这里插入图片描述

3.将inc、src目录拷贝到demo工程文件夹中的FWLIB目录下。

在这里插入图片描述

4.基于以前创建的工程,将常用到的重要文件拷贝到CORE目录。

在这里插入图片描述

5.基于MDK创建新的工程,工程文件为demo,然后保存到demo目录下。

在这里插入图片描述

6.选择芯片“STM32F407ZE”。

在这里插入图片描述

7.以下界面直接“Cancel”。

在这里插入图片描述

8.工程界面显示如下。

在这里插入图片描述

9.添加宏定义、头文件路径。

在这里插入图片描述

10.左侧工程目录树,添加相应的文件。

在这里插入图片描述

十三、软件注册

1.右键点击桌面“Keil uVision5” 图标,并选择“以管理员身份运行”,如下图。

在这里插入图片描述

2.菜单栏中点击“File”,其弹出的子菜单选中“License Management”,如下图。

在这里插入图片描述

3.得到计算机ID,即“Computer ID”,如下图。

在这里插入图片描述

4.打开注册机。

1)输入在Keil获取到的CID码,Target中选择“ARM”,再选中“Prof.Developers Kit/RealView MDK”。

2)点击“Generate”按钮,则生成许可证ID码“WHY30-BKKB7-ADVKK-ZDI8J-B8KH6-83FQ6”。

在这里插入图片描述

**注:**该注册机使用时必须关闭所有杀毒软件,该软件容易被杀毒软件误报直接删除。

5.将生成的许可证ID码“WHY30-BKKB7-ADVKK-ZDI8J-B8KH6-83FQ6”拷贝到Keil许可证管理界面。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化脚本到LabVIEW转换

工业自动化领域中的专用脚本语言转换为LabVIEW时需要注意的问题 语法差异: 脚本语言特点: 工业自动化脚本语言通常具有特定的语法和结构,例如条件判断、循环控制、硬件指令等。这些语言直接面向硬件操作,语法简洁,适用…

element-plus 新增一行合计。除了用summary-method还可以用append的插槽

:summary-method"getSummaries" <el-table:data"reformtableData"style"width: 100%"show-summary:summary-method"getSummaries"ref"reformtableRef" > <el-table-column label"序号" type"index…

MyBatis查询 ▎修改 ▎删除

前言: 在现代应用开发中&#xff0c;数据库操作是核心环节。MyBatis 作为一款灵活的持久层框架&#xff0c;提供了直接编写 SQL 语句的能力&#xff0c;避免了其他 ORM 框架可能带来的性能和功能限制。MyBatis 的查询、修改和删除操作是开发者必须掌握的基本技能。这些操作不仅…

go 使用 gitlab 搭建私有化模块系统

背景 本教程旨在教大家使用私有化部署的 gitlab 作为 go 的代码共享库&#xff0c;帮助团队分离代码模块&#xff0c;加强质量管控。go 官方在实现过程中就高度结合 VCS 系统&#xff0c; 可以仅通过配置相关的环境变量就实现私有库在 VCS 上的搭建。 代码分离样例 这里直接…

虚幻5|制作玩家血量,体力(还未编辑,只用于引用)

未编写&#xff0c;仅引用 优化后&#xff1a; 把增加生命&#xff0c;减少生命&#xff0c;也可以用在体力里&#xff0c;更改如下 限制浮点&#xff0c;如果血量或体力按10来扣&#xff0c;如果你的血量降低到5&#xff0c;那么就会以5的数值来扣&#xff0c;而不会扣成-5…

JVM极简教程

基础概念 1.1. Java 虚拟机 是运行 Java字节码的虚拟机 1.2. JVM跨平台原理 JVM在不同的系统&#xff08;Linux、Windows、MacOS&#xff09;上有不同的实现&#xff0c;目的是在使用相同的字节码&#xff0c;它们都会给出相同的结果 JVM跨平台本质&#xff1a;不同操作系统…

如何满足业主多元需求?开发物业APP,打造智能社区生活

随着智能科技的快速发展&#xff0c;物业管理也逐渐迈入数字化时代。物业app开发成为了提升社区管理效率、改善居民生活质量的重要途径&#xff0c;许多物业管理公司纷纷开发物业App&#xff0c;以提升管理效率、改善用户体验。一款出色的物业APP能够整合居民需求、提升企业服务…

Mybatis进阶——动态SQL

动态SQL 是Mybatis的强大特性之一&#xff0c;能够完成不同条件下的不同SQL拼接&#xff0c;可以参考官方文档&#xff1a;动态 SQL_MyBatis中文网 xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLI…

uniapp/uniapp x总结

uni-app组成和跨端原理 上图所诉 App的渲染引擎&#xff1a;同时提供了2套渲染引擎&#xff0c;.vue页面文件由webview渲染&#xff0c;原理与小程序相同&#xff1b;.nvue页面文件由原生渲染&#xff0c;原理与react native相同。开发者可以根据需要自主选择渲染引擎。 uniapp…

52.给定一个整数 n,实现一个算法返回 n 皇后不同的解决方案的数量

52. N-Queens II 题目 n皇后问题是指将n个皇后放置在一个nn的棋盘上,使得任意两个皇后不在同一行、同一列或同一对角线上。 给定一个整数 n,返回 n 皇后问题不同的解法数量。 示例: 输入: 4 输出: 2 解释: 4皇后问题有如下两个不同的解法: [ [“.Q…”, // 解法 1 “……

sqli-labs靶场通关攻略(36-40关)

第36关&#xff08;宽字节注入&#xff08;Bypass MySQL Real Escape String&#xff09;&#xff09; 查数据库 ?id-1%df%27%20union%20select%202,database(),3%20-- 查表 ?id-1%df union select 1,group_concat(table_name),3 from information_schema.tables where tab…

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict)

Python青少年简明教程&#xff1a;列表&#xff08;List&#xff09;、元组&#xff08;tuple&#xff09;和字典&#xff08;dict&#xff09; 在Python中&#xff0c;列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;和字典&#xff08;Dict&#xff09…

Ubuntu下部署Hadoop集群+Hive(三)

Hive部署 准备环境 apache-hive-4.0.0-bin.tar.gz、mysql-connector-j-8.1.0.jar 如果是离线安装的话&#xff0c;使用mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar&#xff0c;在线安装的话则不用&#xff1b; hive下载地址&#xff1a;Index of /hive (apache.org) mysql …

机械学习—零基础学习日志(如何理解概率论9)

大数定律与中心定律 来看一道习题&#xff1a; 这个题目看看&#xff0c;应该是什么呢~下一章来看看解析~ 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版&#xff08;王志超&#xff09;》学习笔记 王志超老师 &#xff08;UP主&#xff09;

vue3 + ElImage + nodejs 集成了看板娘(UI原生开发达99%)的响应式BLOG(个人博客)。

一、想要我的屎山代码&#xff0c;可以私聊我哟 访问地址&#xff0c;欢迎访问&#xff08;访问效果更佳&#xff09; ☂ 被你发现了&#xff01;&#xff5c; snows_ls BLOGhttp://124.223.41.220/ 欢迎互挂友链 二、做了个啥 1、看板娘&#xff08;看效果好吧&#xff09;…

【数据结构】线性表的顺序表示(顺序表的定义和基本操作)

计算机考研408-数据结构笔记本之——第二章 线性表 2.2 线性表的顺序表示&#xff08;顺序表的定义和基本操作&#xff1a;初始化/插入/删除/查找&#xff09; 2.2.1 顺序表的定义 1.定义 顺序表是线性表的顺序存储。 所谓顺序存储&#xff0c;就是把逻辑上相邻的元素存储在物…

C++ 设计模式——享元模式

C 设计模式——享元模式 C 设计模式——享元模式1. 主要组成成分2. 享元模式内部状态3. 享元模式外部状态4. 逐步构建享元模式4.1 抽象享元类定义4.2 具体享元类实现4.3 享元工厂类实现4.4 主函数 5. 享元模式 UML 图享元模式 UML 图解析 6. 享元模式的优点7. 享元模式的缺点8.…

Linux驱动学习之中断与等待队列

本篇分为设备树部分和API接口部分 设备树 想要使用中断&#xff0c;设备树中需要有两个属性&#xff1a; interrupts // 表示要使用哪一个中断, 中断的触发类型等等。 interrupt-parent // 这个中断要接到哪一个设备去? 即父中断控制器是谁 父中…

趣味算法------拯救阿拉德大陆

目录 ​编辑 题目描述&#xff1a; 思路解析&#xff1a; 具体代码&#xff1a; 总结&#xff1a; 题目描述&#xff1a; 此时一批勇士也随之而来&#xff0c;但其能力也是参差不齐&#xff0c;我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号&am…

JobSchedulerService.setRequiresCharging需充电且电量大于90%才触发的现象

一、摘要 从源码看原生JobSchedulerService.setRequiresCharging 的特性&#xff0c;该特性竞品机器华为、Oppo也是如此。 1、应用处于前台可见&#xff0c;满足充电条件&#xff0c;立刻触发 2、应用处于后台不可见&#xff0c;需要设备连接USB或AC且电量大于90%&#xff0…