**

单片机简介**

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已(一个集成封装样式的芯片就是一台pc,不要把那个开发板电路板也算进去)。
  
   【就这个就叫单片机】
  
  我们先普及一个概念,单片机(即Microcontroller Unit;MCU) 里面有什么。一个人最重要的是大脑,身体的各个部分都在大脑的指挥下工作。MCU跟人体很像,简单来说是由一个最重要的内核加其他外设组成,内核就相当于人的大脑,外设就如人体的各个功能器官。下面我们来简单介绍下51单片机和STM32单片机的结构。
**

一、51与STM32单片机架构

1、51架构

**


51系统结构框图

我们说的51一般是指51系列的单片机,型号有很多,常见的有STC89C51、AT89S51,其中国内用的最多的是STC89C51/2,下面我们就以STC89C51来讲解,并以51简称。

  1. 内核
      51单片机由一个IP核和片上外设组成,IP核(内核)就是上图中的CPU,片上外设就是上图中的:时钟电路、SFR和RAM、ROM、定时/计数器、并行I/O口、串行I/O口、中断系统。IP核跟外设之间由系统总线连接,且是8bit的,速度有限。

51内核是上个世纪70年代Intel公司设计的,速度只有12M,外设是IC厂商(STC)在内核的基础上添加的,不同的IC厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里Intel属于IP核厂商,STC属于IC厂商。我们后面要讲的STM32也一样,ARM属于IP核厂商,ARM给ST授权,ST公司在Cortex-M3内核的基础上设计出STM32单片机。

  1. 外设
      我们在学习51的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。

编程的时候操作的寄存器位于SFR和RAM这个部分,其中SFR(特殊功能寄存器)占有 128字节(实际上只用了 26 个字节,只有 26 个寄存器,其他都属于保留区),RAM占有 128 字节,我们在程序中定义的变量就是放在RAM中。其中SFR和RAM在地址上是重合的,都是在80~FF地址区间,但在物理区间上是分开的,所以51的RAM是有256个字节。

编写好的程序是烧写到ROM区。剩下的外设都是我们非常熟悉的IO口,串口、定时器、中断这几个外设。
【51单片机的CPU结构】

51单片机内部有一个8位的CPU,包含运算器,控制器及若干寄存器等。
【注意】上图中这个外存储器是在cpu虚线外面

2. STM32架构


STM32系统结构框图

  1. 内核

在系统结构上,STM32和51都属于单片机,都是由内核和片上外设组成。只是STM32使用的Cortex-M3内核比51复杂得多,优秀得多,支持的外设也比51多得多,同时总线宽度也上升到32bit,无论速度、功耗、外设都强于51。

从结构框图上看,对比51内核只有一种总线,取指和取数共用。Cortex-M3内部有若干个总线接口,以使CM3能同时取址和访内(访问内存),它们是:

指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即FLASH外设)的访问,分别是I-Code总线和D-Code总线。

I-Code用于取指,D-Code用于查表等操作,它们按最佳执行速度进行优化。

系统总线(System)用于访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。

私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。

还有一个DMA总线,从字面上看,DMA是data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工,这个在51里面是没有的。

  1. 外设

从结构框图上看, STM32比51的外设多得多,51有的串口、定时器、IO口等外设 STM32 都有。STM32还多了很多特色外设:如FSMC、SDIO、SPI、I2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。
(随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP核复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP核复用的SoC(System on Chip的缩写,称为系统级芯片,也有称片上系统)设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。)
(中间这段内容我也看了一个大佬的内容然后觉得非常精炼,与其再组织语言去描述,不如直接copy过来供大家阅读分析)

51单片机特性

1、从内部的硬件到软件有一套完整的按位操作系统,称作位处理器(CPU),处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。

2、同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便,

3、乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。
STM32单片机特性

1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法

2、存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器

3、时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振

4、调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口。

二、由PC的操作系统、内核联想到MCU

操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
  操作系统定义:一组控制和管理计算机硬件和管理软件资源,合理对各类作业进行调度,以及方便用户使用的一组程序的集合属于软件);
一、cpu:
cpu是central process unit的简称,是计算机的核心处理器。cpu的作用是运行机器语言指令。高级语言和汇编语言程序被编译成cpu能理解的机器语言(二级制代码)后,存入到内存中,cpu就会从内存中读取并执行这些指令序列,完成程序功能
包括控制器、寄存器、运算器、时钟四个部分组成。
运算器是用来进行逻辑计算的,
寄存器是临时存放中间数据以及指令的;包括程序计数器、指令寄存器、数据寄存器、地址寄存器等。 寄存器是汇编语言所研究的对象,汇编语言通过对寄存器的控制(写入,读出,加),实现功能。程序计数器和内存的关系:程序计数器记录了当前执行的指令在内存中年存储的位置。
控制器是用来控制何时将内存的数据及指令读入寄存器,何时将寄存器中的值输出到内存。
时钟是同步各个部件之间的步调;
二、内存RAM
内存又叫主存,与cpu的寄存器链接,用于将数据以及指令输入到寄存器中;同时也可以接受寄存器的输出。本质是作为磁盘与寄存器的中间件,起到缓冲作用。断电后会丢失所有数据。
内存和磁盘的关系:由于磁盘的读写速度与cpu相差太大,如果cpu直接从磁盘中读取数据,会造成cpu计算能力极大的浪费。为了解决这个问题,在磁盘与cpu之间加一个内存,将磁盘存储的程序以及数据线读入内存中,cpu直接与内存打交道。此外,由于内存的空间比磁盘小很多,会出现内存不够用的情况,此时,会将一部分磁盘当做内存来使用,也就是虚拟内存。
三、磁盘ROM
存放数据的,容量比内存大,速度慢。
断电不会丢失数据。
四、指令:
指令是控制cpu按照一定功能运算的机器码。每一种cpu有自己的一套指令集。高级语言编写的程序最终也要编译成可以让cpu理解的一条条机器指令,才能被cpu执行。cpu除了可以计算数据以外,还可以控制硬件,方法是通过cpu寄存器与I/O端口进行数据交换。计算机中主机与外围硬件的链接方式是通过I/O端口进行的(端口是用于主机寄存器与外围设备交换数据时临时存储数据的寄存器)。所以,指令通过控制cpu的输出和输入位置,可以让cpu寄存器向I/O端口寄存器发送数据,外围设备通过与I/O寄存器交换数据,从而达到控制外围设备的效果。而操作系统的作用是封装一套指令序列,cpu通过执行这套指令序列,可以让硬件完成一系列动作。而应用程序如果需要对硬件进行操作,只需要将操作系统的这套指令序列复制到自己的程序中即可。复制这套指令的方式就是API(API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。)。从这个角度来看,操作系统就是封装了控制硬件完成一系列动作的指令序列的集合,这套集合提供给应用程序以及计算机的使用者。从而达到了将人、应用程序与硬件隔离的效果。
五、操作系统的内核
操作系统内核(就是操作系统最核心最底层的一部分代码(基础代码))
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。
现在主流的操作系统内核有四个:Unix、Linux、Windows、OS/2
其他很多各种各样以及各个版本的系统都是建立在这四种内核的基础上的。

所以不妨大胆去想MCU是集成版PC,所以操作系统等控制CPU的软件程序指令就好比你烧录到单片机里面的程序一样(暂时这样理解),那么指令又是如何控制CPU呢?





cpu只能执行所支持的指令集里的指令,不同公司的产品对应有自己的指令集,cpu是出厂前预先设计制造好的电路,操作系统/软件程序编写肯定是要对照着相应产品cpu的指令集,这样的程序编译后才能让cpu执行,也就是控制cpu;

51与STM32单片机架构(内核和片上外设)的区别汇总+拓展相关推荐

  1. 芯片的内核,片上外设,片外外设。

    我需要理清楚思路于是写了这篇文章. 我学习嵌入式有一段时间始终不知道该如何学习.某天一个疑问出现在我的脑海什么是芯片我思考了好久,我看着电路板上的芯片始终不能理解,尤其是看了stm32上的程序之后.当 ...

  2. 51、stm32单片机初学者经验之谈

    51单片机作为最经典的一款单片机,已在各大高校的电子.通信专业的入门单片机课程,想学单片机这是最好的入门单片机. 单片机就是一块芯片,如stc89c52.stm32f103zet6.stm32f103 ...

  3. 51与STM32单片机寄存器比较

    51单片机是8位单片机,一次操作1个寄存器只能操作8个位. STM32单片机是32位单片机.一次操作1个寄存器可以操作32个位. 51单片机利用两个8位寄存器操作int, STM32利用一个32位寄存 ...

  4. 天猫精灵连接蓝牙摸索4 STM32单片机和TG7100B实现数据上发和播报

    天猫精灵连接蓝牙摸索3 介绍的是通过电脑串口调试助手AT指令结合下载有SDK固件的TG7100B实现数据上传APP显示和语音播报. 这一节展示的是直接用STM32单片机编辑程序结合下载有SDK固件的T ...

  5. stm32单片机零基础怎么入门,用什么语言编程?

    我们随便在招聘平台搜"嵌入式开发"这个职位,看到很多职位都要求会STM32,为什么? 我个人也用了STM32单片机几年,感觉非常爽,后面做产品能用ST的基本不用别的. 主要原因有以 ...

  6. STM32单片机与蓝牙模块HC-05通信数据帧处理

    本章将会详细讲述蓝牙模块(HC-05)和STM32单片机之间的通信收发的数据如何处理,在测试开始前首先在手机上下载好一个蓝牙调试APP,此APP可以是手机端和PC端口的,以我常用的手机端的为例. 在配 ...

  7. STM32单片机和51单片机区别

    单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存).ROM(程序存储).输入输出设备(串口.并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中 ...

  8. 单片机51和stm32编程步骤一样吗?

    我是在10年前自学的单片机. 那个时候主要是学的51单片机入门的,从零基础到靠这个找到工作前后大概花了3-5个月左右,具体多久我忘记了. 当时竞争还没现在这么大,很多新型的单片机也还没出来,所以选择相 ...

  9. 入门单片机选择51还是stm32?入门单片机有哪些好的教学视频?

    不知道大家还记不记得自己小学时候自己的梦想? 有人想成为医生.有人想成为医生,有人想成为飞行员,而我想成为发明家. 可能真是我这种想法,也导致我的性格从小就比较内向,毕业出来以后也从事技术. 人生的上 ...

最新文章

  1. [Caffe]:关于Eltwise layer
  2. (chap4 IP协议) IP基础知识
  3. dhcp服务器能为客户端提供哪些信息,为DHCP客户端提供DHCP服务器的MAC [关闭]
  4. 斑马打印机linux驱动安装教程,热敏打印机安装驱动教程
  5. 110千伏变电站对人体的危害
  6. 【Nginx】503 Service Temporarily Unavailable
  7. PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection阅读
  8. 知乎上 40 个有趣回复,很精辟很提神
  9. 白山搜索引擎优化收费_百度搜索引擎优化收费标准
  10. 缺少msvc140.dll解决办法,缺少任意dll文件的解决办法
  11. 在Nignx增加http2模块顺便聊聊HTTP的八卦
  12. 经验分享:《节奏大师》UI优化历程
  13. 批一批淘宝首页的源代码
  14. H.266/VVC-VTM代码学习18-自适应QP设置(Adaptive QP)
  15. 三极管原理,开关电路设计原则,NPN、PNP区别及常用三极管参数
  16. 清风数学建模---插值算法
  17. 论文阅读——CR-Fill: Generative Image Inpainting with Auxiliary Contextual Reconstruction
  18. 七天玩转Redis | Day7、Redis常见面试题及课程总结
  19. 【Redis高级应用总结】
  20. 迪文DWIN串口屏的使用经验分享(最新添加了T5L新产品体验)

热门文章

  1. Linux普通用户切换为超级用户(精华)
  2. Cadence 原理图栅格设置步骤
  3. 投影仪和屏幕切换快捷键(Win+P)
  4. 互联网40岁失业是一个无法打破的魔咒吗?
  5. js深度遍历json数组改变属性名
  6. Windows10 安装、升级失败,错误 0x800701b1 - 0x2000A
  7. python遍历字符串存入列表_Python遍历字符串的4种方式
  8. 计算机考试准考证上照片可以美图吗
  9. Linux下kill命令详解
  10. sps忘记保存文档怎么恢复_office2010文档忘记保存丢失如何恢复