STM32入门周边知识(为什么要装MDK,启动文件是什么,为什么要配置时钟等等)

2024-05-11 08:20

本文主要是介绍STM32入门周边知识(为什么要装MDK,启动文件是什么,为什么要配置时钟等等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • MDK
    • MDK与C51共存
    • 为什么要安装MDK
  • 启动文件是什么,为什么要添加许多文件
  • 为什么要添加头文件路径
  • 为什么是寄存器配置
  • 魔术棒中的define
  • 为什么必须先配置时钟
  • 杂例

MDK

MDK与C51共存

在最开始学习51单片机的时候,当时安装keil的时候,认为就是针对于51单片机的写程序的软件。后来学习32发现要安装MDK,MDK和C51安装在一个目录里面就可以直接使用,就产生了为什么两个软件可以共存的疑问。
我们常说的keil其实是Keil uVision
电脑上安装的也是Keil uVision5
在这里插入图片描述
1985年4月,Keil 公司正式成立。2005年10月,Keil 公司被英国的 ARM 公司收购,ARM公司用来开发用于ARM架构的芯片的编译器。现在keil公司也是ARM公司的一部分。Keil其实就是公司的名字

uVision是由keil公司开发的集成开发环境(IDE),可以进行代码编辑,文件管理,程序的编译调试等。
目前uVision的版本有uVision2、uVision3、uVision4、uVision5。我们常说的keil4指的是uVision4,keil5指的是uVision5。
每一个uVision版本下都有4个独立的软件:C51、C251、C166、ARM。
打开公司官网可以看到有四款软件,学习51的时候下载的就是C51,不过大部分人下载的都是盗版的,正版的要钱。学习32的时候下载的就是第一个MDK。
在这里插入图片描述
uVision ARM就是MDK,或者可以称为MDK-ARM。
这一款软件主要支持ARM7,ARM9,Cortex等ARM内核。
uVision C51这款软件主要支持51单片机这类芯片的内核。
uVision C251与uVision C166这两款软件主要支持其他两类内核。

我们右键keil的图标,进入文件所在位置,锁定的是UV4.exe,所有不能误认为UV4文件夹里面就是IDE,就是uVision内核。
在这里插入图片描述

可以认为这是一个启动程序,除去圈起来的ARM和C51,剩下的是一体的,用来启动对应的IDE(集成开发环境)。而真正的基于uVision的集成开发环境我们装了两套,就是ARM一套,用来编译ARM架构的芯片程序,而C51是另一套,用来编译51内核对应的芯片程序。
在这里插入图片描述

MDK:(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具,为满足基于MCU进行嵌入式软件开发的工程师需求而设计,支持ARM7,ARM9,Cortex-M4/M3/M1,Cortex-R0/R3/R4等ARM微控制器内核。
KEIL C51:,亦即PK51,KEIL公司开发的基于uVision IDE,支持绝大部分8051内核的微控制器开发工具。
通过上述大概可以知道,MDK和C51其实是两款软件。
MDK、KEIL C51、KEIL C166、KEIL C251,它们都是KEIL公司品牌下的产品,都基于uVision集成开发环境。
Keil C51使用【ANSI C】编译器。Keil MDK使用【ARM Compiler】编译器。对应的【汇编器】、【链接器】等也不同。 所以才说真正的两款不同的IDE,是在ARM和C51文件夹中。就是在我们下载MDK和C51的时候下载的。而剩下的类似编辑器和引导文件,我们把C51和MDK放在同一个文件夹的时候就只有一份,在第一次下载的时候就下载了,如果放在两个文件夹里就会有两个。
我们打开ARM文件夹,会发现里面有一个ARMCLANG文件夹,而我们知道clang是一款编译器,这就可以确定编译器是在下载MDK的时候才有的。
我们下载C51和下载MDK都是在下载对应的集成开发环境。
在这里插入图片描述

总结:
Keil 软件是一种统称准确来说是Keil uVision,更准确来说是它包含编辑器、编译器、链接器、调试器等众多工具为一体的集成开发环境(IDE)。
Keil C51 和 MDK 是针对不同类型 MCU 的两款集成开发工具。
Keil C51是针对51内核单片机,比如:AT89C51、 STC89C51等。
Keil MDK,也叫MDK-ARM,是针对【ARM内核】单片机,比如:STM32F1、 LPC1788等。
Keil C51 和 Keil MDK 都集成了 uVision 这套开发环境,只是二者略有一些差异。最直观的感受就是界面一样,编辑、工程管理等这些操作一样。
个人理解uVision更像是一个内核,C51和MDK都是在这个内核套上不同的环境。我们选择芯片后就调用了不同的环境,就是调用C51文件夹里面的东西还是ARM里面的东西。
在这里插入图片描述
在这里插入图片描述
这两个文件夹其实就是对应需要调用的文件。
但是需要注意的是:我们有两个基于uVision的环境,分别在两个文件夹里面,分别是ARM和C51,这两个是内核,剩下的是编辑器和引导文件。

为什么要安装MDK

MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具,为满足基于MCU进行嵌入式软件开发的工程师需求而设计,支持ARM7,ARM9,Cortex-M4/M3/M1,Cortex-R0/R3/R4等ARM微控制器内核。
安装MDK一方面是为了安装芯片资料,另一方面也是安装ARM架构芯片的程序编译环境,毕竟C51和ARM架构的编译器,汇编器等等都不同。

启动文件是什么,为什么要添加许多文件

我们创建stm32工程的时候需要先添加许多文件,其中就包括启动文件,那这个启动文件是什么作用呢。
在这里插入图片描述

stm32的程序就是从启动文件开始的
启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:
1、初始化堆栈指针SP=_initial_sp
2、初始化PC指针=Reset_Handler
3、初始化中断向量表
4、配置系统时钟
5、调用C库函数_main初始化用户堆栈,从而最终调用main函数
其中中断服务函数中有个复位中断,
当32上电复位或按下复位按键后就会进入复位中断函数执行SystemInit函数和mian函数,就是整个程序的入口。
在这里插入图片描述

在这个startup文件夹同一目录下还要一些2文件和1个C文件
stm32f10x.h就是stm32的外设寄存器描述文件,作用就和51单片机的REGX52.H的作用一样,是用来描述STM32有哪些寄存器和他对应的地址的。
system文件是用来配置时钟的。
在这里插入图片描述
core文件是内核描述文件,都是创建工程必备的文件(采用标准库开发的时候)
在这里插入图片描述
以上这些文件都是一些必备的文件,基于寄存器开发的话这写就够了,但是我们大部分时候都是基于库函数开发的,这就只需要添加一些官方的库就可以了。
需要额外说的是,库函数中有一个misc.c的文件是一些杂项,一些内核的库函数,其他的是外设的库函数。
在这里插入图片描述

为什么要添加头文件路径

在这里插入图片描述

在建立过程的时候要在魔术棒里的C/C++选项下面的Include Paths下添加一些文件夹,这些文件夹是用来添加头文件路径的,像现在使用的Visual Studio是不需要添加头文件路径的,会自动取当前文件夹下找头文件,找不到的话就去对应的库问价路径下找,但是Keil这款软件比较老,无法自己寻找路径,就需要添加头文件路径,去指定头文件所在路径。

为什么是寄存器配置

之前学习微机原理的时候知道CPU内部有通用寄存器和段寄存器等等一些寄存器,但是学习32的寄存器配置的时候发现有好多寄存器,因为之前学习说过寄存器存在的很少,速度很快,但是现在却出现了很多寄存器。
搜索后发现,其实是内存中有一些存外设地址的内存块,说是寄存器配置,其实配置的还是在内存里面,并不是真正的寄存器。

魔术棒中的define

我们添加的文件中有一个conf文件,它包含了所有库函数的头文件。
在这里插入图片描述
而在stm32f10x.h中包含了此头文件,而且有一个条件编译。那么我们有个宏的话就只需要添加一个头文件就可以使用所有的库函数了。
在我们没看到的其他文件中也有包含了stm32f10x.h的,那么如果没有这个条件编译就无法包含stm32f10x_conf.h,那么如果要使用库函数的时候就会报错。同时我们的主函数最上面也是包含的stm32f10x.h。
在这里插入图片描述
这个define相当于在整个工程中都添加了这个宏,这样就不需要在每个文件中都添加这个宏了。而且有的添加的文件是只读文件,没办法添加宏,但是这里添加的宏同样适用。
在这里插入图片描述

为什么必须先配置时钟

所有寄存器都需要时钟才能配置,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。我们配置时钟是多少兆赫兹,也就是一秒钟送去或者读取寄存器的电平的次数。相当于读写的频率。由晶振来控制,倍频或者分频。但是主函数的执行就只有晶振一个频率,震一下执行一次。
任何MCU的任何外设都需要有时钟,8051也是如此;STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。
ARM的芯片都是这样,外设通常都是给了时钟后,才能设置它的寄存器(即才能使用这个外设)

杂例

51内核与32内核的区别

51单片机:
我们说的51一般是指51系列的单片机,型号有很多,常见的有STC89C51、AT89C51,其中国内用的最多的是STC89C51或STC89C52,之所以说是51单片机,就是使用的51内核的单片机。
在这里插入图片描述
51内核是上个世纪70年代Intel公司设计的,速度只有12M,外设是IC厂商(STC)在内核的基础上添加的,不同的IC厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里Intel属于IP核厂商,STC属于IC厂商。我们后面要讲的STM32也一样,ARM属于IP核厂商,ARM给ST授权,ST公司在Cortex-M3内核的基础上设计出STM32单片机。

STM32单片机:
STM32单片机则是ST(意法半导体)公司使用arm公司的cortex-M3为核心生产的32bit系列的单片机,他的内部资源(寄存器和外设功能)较8051要多的多,基本上接近于计算机的CPU了,适用于手机、路由器等等。
在这里插入图片描述

我们说使用了不同的内核,可以理解为CPU内部设计不同,说架构不同,就类似于51单片机CPU和外设在一条系统总线上交互,而32有APB1,APB2,AHB等总线,还有片上外设不同。有时候我也会认为架构和内核是一个东西,统指芯片内部。具体概念并不是很清楚。

以上均是个人浅显理解,可能存在存在错误,了解后会及时更新。

这篇关于STM32入门周边知识(为什么要装MDK,启动文件是什么,为什么要配置时钟等等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978999

相关文章

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

[职场] 公务员的利弊分析 #知识分享#经验分享#其他

公务员的利弊分析     公务员作为一种稳定的职业选择,一直备受人们的关注。然而,就像任何其他职业一样,公务员职位也有其利与弊。本文将对公务员的利弊进行分析,帮助读者更好地了解这一职业的特点。 利: 1. 稳定的职业:公务员职位通常具有较高的稳定性,一旦进入公务员队伍,往往可以享受到稳定的工作环境和薪资待遇。这对于那些追求稳定的人来说,是一个很大的优势。 2. 薪资福利优厚:公务员的薪资和

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象