当前位置:网站首页>【STM32学习1】基础知识与概念明晰
【STM32学习1】基础知识与概念明晰
2022-08-02 14:09:00 【天山没有长寿茶】
目录
前言
在开始学习STM32单片机之前,脑海中已经有了许多零碎的概念,在此对其做出明确的定义与解释,以增加知识学习的条理性。
一、什么是嵌入式系统?
嵌入式系统(embedded system),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。与我们通常意义上讲的计算机,也就是个人电脑(Personal Computer,PC)相比,嵌入式系统功能更为单一,而个人电脑更为灵活,可以满足用户多种不同的需要。比如电子手表,不需要电脑那样丰富的功能,里面的电子元件便可称为嵌入式系统。如果把个人电脑比作综合性大学,什么学科都有,则嵌入式系统就是职业技术学校,体量小,但够专业。
随着电子技术的不断发展,诞生了许多的专业名词,包括CPU、MCU、MPU、DSP、单片机、Soc……他们的概念你中有我、我中有你,许多又是英文缩写,让人理解起来晕头转向。其实这些名词之间也没有什么明确的界限,许多只是因关注的角度不同而诞生。
- 中央处理单元(Central Processing Unit,CPU;Central Processor):英文中又叫做central processor或者main processor。早期是指计算机中执行基本算术、逻辑、控制和输入/输出 (I/O) 操作的电子电路。不包括存储器、外围电路以及GPU等模块。
- 微处理器(Micro Processing Unit,MPU):当前所有的CPU均可被称为微处理器,这是在CPU发展过程中诞生的名词。随着技术的进步,CPU在性能提升的同时体积也越来越小,为了突出这一特点有的人便把CPU称为MPU。MPU一词被广泛用于嵌入式领域,便不局限于CPU所包含的功能,GPU、DSP等专业的处理器也被归于微处理器。
- 微控制器(Micro Controller Unit,MCU):一般又可以称为单片机(single-chip microcomputer),指的是嵌入式领域中把CPU、存储器、定时器、各种I/O接口都集成在一块芯片上的微型计算机。与微处理器相比,微控制器除了CPU一般还包括其他的计算机组成模块。

- 片上系统(System on a Chip,SoC):嵌入式领域的名词,指集成在单一芯片上的电子系统,相较于微控制器,片上系统一般只功能更加强大的处理器。
- 图像处理单元(Graphic Processing Unit,GPU):也就是我们常说的显卡,在计算机系统上执行绘图运算工作的处理器。
- 数字信号处理器(Digital Signal Processor,DSP):专门用于数字信号处理的微处理器。
另外还有大家耳熟能详的PLC、PLD、FPGA等名词,概念简单描述以下
- 可编程逻辑控制器(Programmable Logic Controller,PLC):源于工业领域,具有微处理器,用于自动化控制的数字电子设备。早期的PLC用来代替继电器实现逻辑控制,然而随着计算机技术发展,PLC的结构与功能变得与一般计算机系统类似。可以理解为一种源于工业领域的计算机系统。
- 可编程逻辑器件(Programmable Logic Device,PLD):可以编辑硬件进而改变逻辑的集成电路,代表为现场可编辑逻辑门阵列(Field Programmable Gate Array,FPGA)。相较于一般的微控制器(单片机)更偏向硬件编程,通过硬件描述语言在芯片上自定义集成电路。有的人将FPGA称作半集成电路。
- 专用集成电路(Application Specific Integrated Circuit,ASIC):依产品需求不同而定制的特殊规格集成电路,由于单个专用集成电路芯片的生产成本很高,如果出货量较小,有的时候使用可编程逻辑器件(如FPGA)来作为目标硬件实现集成电路设计。
试着用一张图表示这些名词之间的关系,如有纰漏,敬请斧正。

二、STM32框架
STM32属于MCU,也是当下最流行的MCU之一。芯片内核采用的是ARM公司的Cortex-M架构,总体框架如下图所示

- CMSIS( Cortex Microcontroller Software Interface Standard ):翻译过来是ARM Cortex 微控制器软件接口标准,可以理解为ARM公司向各芯片厂商提供内核架构的同时,为了统一性,也提供了驱动这些内核的软件标准。芯片厂商只要使用了ARM公司的Cortex架构,在设计程序时就要采用CMSIS定义的标准。
- HAL(Hardware Abstract Layer):翻译过来是硬件抽象层。这是ST公司依照CMSIS标准,将底层的寄存器操作与一些外设配置封装得到的代码库。这样统一了STM32众多型号芯片的开发代码,增强了代码的可移植性,但过多的封装层也降低了代码的运行效率。
简单来讲,CMSIS是ARM公司推出的统一接口标准,而HAL是ST公司在CMSIS基础上推出的封装层,他们的作用都是在芯片底层与用户程序之间添加一个中间层,用户就不需要过多了解芯片底层内核的操作方式,只需要掌握中间层接口的使用方法,便可驱动芯片。好比我不太懂打印机的内部电路、工作原理,但厂商已经帮我们拿一个大外壳把整个机器罩住,留了几个按键在外面,我只需要知道这几个按键的功能,按一按便可以打印出纸张。
其实像HAL这样的封装库还有另外几种,只是我们这次选择了HAL库,其它的比如经典的标准外设库以及最新推出的LL库,或者我们直接对STM32的寄存器进行操作(STM32Snippets),它们各自有各自的优劣,如下表所示

三、关于硬件与软件的一些概念
- 硬件(Hardware):计算机系统中的物理、有形部分,包括机箱、主板、显示器等。
- 软件(Software):按照特定顺序组织的电脑数据与指令,计算机中的非有形部分。主要可以分为系统软件与应用软件。
- 固件(Firmware): 一种特殊的软件,对于硬件内部更加贴近与重要。固件担任驱动芯片的最底层工作。
- 驱动(Driver):为了适应不同的操作系统环境,为硬件提供的驱动硬件的小段代码一般被称为驱动,也是一种特殊的软件。相比于固件,驱动是为了在不同的操作系统上运行硬件而生,如果世界上只有一种操作系统,也就没有驱动存在的必要了。
- 中间件(Middleware):提供系统软件与应用软件之间的连接,便于软件之间的沟通的软件。这样看来STM32相关的HAL库与CMISIS类似一种固件与中间件的结合。
四、芯片厂商简介
我们在学习STM32嵌入式知识时,离不开使用各大公司的产品,这里对一些公司与其产品做一个简单的介绍
- ARM公司(英国,1991):全球领先的半导体知识产权(IP)提供商。全世界超过95%的智能手机和平板电脑都采用ARM的架构 。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。总的来讲ARM主要为各芯片厂商提供芯片架构与内核设计,不生产芯片。另外现在流行的嵌入式软件卡法系统Keil,其公司于2005年被ARM收购。
- 意法半导体(ST)公司(意大利、法国,1987):是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成,涉及的业务包括通信、汽车、计算机、消费等半导体工业的各个方面。ST公司是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列。我们使用的STM32便是其生产的一款32位MCU产品。
- 英特尔Intel(美国,1968):如雷贯耳的半导体行业和计算创新领域的全球领先厂商。我们日常中电脑的CPU大多为Intel的产品。最早的51单片机便由Intel于1980年推出,后来各大芯片厂商推出的凡是兼容Intel 8051指令集的芯片均称为51单片机。
- 德州仪器(Texas Instruments,TI)(美国、1930):是全球领先的半导体公司,为现实世界的信号处理提供创新的数字信号处理(DSP)及模拟器件技术。除半导体业务外,还提供包括传感与控制、教育产品和数字光源处理解决方案。
当然还有许多知名的芯片设计公司,比如我们熟知的苹果、AMD、英伟达等,只是与STM32关系不那么大,不再详述。
五、开发准备
- 集成开发环境(Integrated Development Environment,IDE):辅助程序开发人员开发的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序。IDE通常包括编程语言编辑器、自动构建工具、通常还包括调试器,有些IDE包含编译器。著名的IDE有Microsoft Visual Stdio、MyEclipse、PyCharm……STM32CubeIDE就是ST官方推出的一款专门用于开发STM32程序的IDE。
许多人的习惯是在STM32CubeMX中作基础的配置,然后在Keil中添加代码,完成编译、烧录与调试。但这样毕竟是两个程序,STM32CubeIDE则集合了这两者的功能,并且也是官方推出,所以也可以尝试使用一下这款软件。这款软件基于eclipse开发,界面都十分相似,所以熟悉java以及eclipse的朋友使用这款软件会十分得心应手。

对于要使用的每个STM32芯片,首先我们手上必备的两本手册(ST官网有pdf版):
- 参考手册(Reference manual)
- 数据手册(Datasheet)
其中参考手册包括各个功能模块的具体信息、原理、各种工作模式介绍、配置方法以及寄存器相关信息;数据手册包括芯片的基本参数、引脚数量与各自功能、电气特性、封装信息等内容。一般在选型与硬件设计阶段,参考数据手册多一些,而到了程序设计阶段,参考手册就是必须的了。以下是STM32G4系列的参考手册的“自我介绍”:
本参考手册的目标是应用程序开发人员。 它提供了关于的完整信息如何使用STM32G4系列单片机的内存和外设。
总结
介绍了嵌入式的一些基本概念,STM32的运行框架,一些关于硬件与软件的概念,以及一些芯片厂商。最后简单提了提一些开发STM32的工具与文档。
边栏推荐
猜你喜欢

深度学习之 卷积网络(textCNN)

将SSE指令转换为ARM NEON指令

【我的电赛日记(一)】HMI USART串口屏

Win10 Settings screen out from lack of sleep?Win10 set the method that never sleep

Mapreduce环境详细搭建和案例实现

Binder ServiceManager解析

Win7 encounters an error and cannot boot into the desktop normally, how to solve it?

针对多轮推理分类问题的软标签构造方法

FP7195转模拟恒流调光芯片在机器视觉光源的应用优势

How to set the win10 taskbar does not merge icons
随机推荐
2021-10-14
PHY6222蓝牙5.2支持MESH组网M0内核超低功耗
2020-02-06-快速搭建个人博客
FP5139电池与适配器供电DC-DC隔离升降压电路反激电路电荷泵电路原理图
让深度学习歇一会吧
PyTorch(13)---优化器_随机梯度下降法
jest test, component test
win10系统更新错误代码0x80244022怎么办
Impressions of Embrace Jetpack
Pytorch(16)---搭建一个完整的模型
数据偏见的背后是什么
PyTorch⑩---卷积神经网络_一个小的神经网络搭建
Mapreduce环境详细搭建和案例实现
Tensorflow张量生成
Win11没有本地用户和组怎么解决
【我的电赛日记(二)】ADF4351锁相环模块
Tensorflow常用函数
DP1332E内置c8051的mcu内核NFC刷卡芯片国产兼容NXP
基于51单片机和物联网的智能家居系统(ESP8266物联网模块)
BLE蓝牙5.2-PHY6222系统级芯片(SoC)智能手表/手环