目录

前言

一、什么是嵌入式系统?

二、STM32框架

三、关于硬件与软件的一些概念

四、知名芯片厂商简介

总结


前言

在开始学习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的工具与文档。

【STM32学习1】基础知识与概念明晰相关推荐

  1. 《统计自然语言处理》读书笔记 一.基础知识及概念介绍

    最近准备学习自然语言处理相关的知识,主要参考<统计自然语言处理·宗成庆>和<Natural Language Processing with Python>,推荐大家阅读.第一 ...

  2. 关于图计算图学习的基础知识概览:前置知识点学习(PGL)[系列一]

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 0.1图计算基本概念 首先看到百度百科定义: 图计算(Graph Processin ...

  3. 《机器学习》理论——速读学习1 基础知识

    <机器学习>理论--速读学习1 基础知识 该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动! Time: 2021-12-05 学习目标:我需要了解神经网络除了工程 ...

  4. A.关于图计算图学习的基础知识概览:前置知识点学习(Paddle Graph L)【一】

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  5. 直播平台怎么搭建,你要先来学习音频基础知识

    直播平台怎么搭建,你要先来学习音频基础知识 概述 本片文章主要介绍音频基础,在做音频开发之前首先必须要对音频的相关概念了解.以下是具体内容概述: 常见的音频格式 WAV MP3 WMA RA APE ...

  6. 数据挖掘-数据挖掘综述-基础知识和概念总结

    数据挖掘-数据挖掘综述-基础知识和概念总结                                                  目录 数据挖掘-数据挖掘综述-基础知识和概念总结 1.数据 ...

  7. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  8. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  9. 计算机数据库管理基本知识,2015年计算机四级考试《数据库技术》基础知识:概念篇...

    2015年计算机四级考试<数据库技术>基础知识:概念篇 信息与数据 1. 信息.物质.能量是组成客观世界并促进社会发展的三大基本要素; 2. 信息(Information)--是客观世界事 ...

最新文章

  1. Java 运算符 和 运算符
  2. hive外部表改为内部表_3000字揭秘Greenplum的外部数据加载——外部表
  3. c语言课设代写一般多少钱_厕所疏通一般多少钱
  4. 有三AI高质量内容推荐(广告)须知
  5. 【小白学PyTorch】11.MobileNet详解及PyTorch实现
  6. b^3 - a^3 = c
  7. 使用C#实现适配器模式 (Adapter Pattern) 和外观模式 (Facade Pattern)
  8. leetcode1046. 最后一块石头的重量(堆)
  9. 开发中遇到的bug记录
  10. TP-LINK WN823N 无线驱动 ubuntu
  11. python如何写二进制乘法_使用python写乘法口诀表
  12. php扩展模块作用及中文注释
  13. 壳体花纹怎么设计_换热器设计大全
  14. 什么是SQL Server GETDATE()函数?
  15. char*,const char*和string 三者转换
  16. 使用Flash绘制曲线动画
  17. (vue)监听浏览器刷新
  18. 1124 Raffle for Weibo Followers(map)
  19. android 平板分辨率是多少合适,为什么越来越多的平板放弃16:9的屏幕比例?
  20. PTA 6-9 递归计算P函数 (10分)

热门文章

  1. 计算机毕业设计Java翻转课堂微视频管理系统(源码+系统+mysql数据库+lW文档)
  2. android标题栏渐变动画,Android 顶部标题栏随滑动时的渐变隐藏和渐变显示效果
  3. 一个长期颈椎问题的工薪阶层关于颈椎的康复和预防的心得
  4. Linux环境下 nginx配置按天生成日志
  5. ArcGIS实战:做一张2022年全国高考考生人数分布图
  6. 树与二叉树与森林的相关性质
  7. python抓取网页数据并截图_python实现自动网页截图并裁剪图片
  8. 前端入门篇(四十一)JS基础8动态修改网页内容(DOM操作)
  9. 第二十三章 Caché 命令大全 SET 命令
  10. iOS音频---获取元数据