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

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现