STM32内部是怎么工作的
STM32是怎么工作的
- 1 从孩子他妈说起
- 2 早期计算机的组成
- 2.1 五大元件
- (1)第一个出场的是电容元件
- (2)第二个出场的是二极管
- (3)第三个出场的是电阻元件
- (4)第四个出场的是电感
- (5)第五个出场的是三极管
- 2.2 早期的计算机组成
- 2.3 走入集成电路时期
1 从孩子他妈说起
现在的电子信息系统绝大部分都是智能电子信息系统,所谓智能,是指系统的硬件设计当中,有CPU(central processing unit),以CPU为核心设计控制器,控制系统的运行。
同时,对于电子信息系统而言,其需要感知外部物理环境。
可以“感知外部环境”的装备,名曰:传感器,即sensor。
让我们学究一点,朋友们,去查查sensor的定义:

光照强度、温度、压力、速度、角速度,等等,都属于物理量,
传感器就是这个“系统”的眼睛,
“系统”的大脑是计算机,大脑的核心是“CPU”,也就也是中央处理单元。
然而,对于CPU而言,它只能识别高低电平,我们将低电平记作0,高电平记作1。
因此,传感器需要将物理量转换为电量:

但是,传感器输出的电量通常是毫伏(mV)级的,我们需要将其通过放大器放大到伏特(V)级。之后,我们要将放大后的信号,经过一定的滤波电路进行滤波。这个滤波电路可以是有源滤波,可以是无源滤波,这些都是模拟电子电路的知识点,同学们可以去自行复习。
我们将放大和滤波电路,称之为 “前端调理电路”。

注意:上图中,我们在调理电路的输出端,加了测试点,这里的意思是,在画PCB印制电路板时,在调理电路的输出端,要留出一定的空间,方便测试,也就是能够放下示波器的夹子。
由于调理电路出来的是模拟连续信号,而CPU只能处理数字信号,因此,需要设计一个模块,将模拟信号转换为数字信号,也就是 Conversion of analog signals to digital signals,我们可以简记为AD转换。A就是analog,D就是digital。
AD转换模块,有两个重要指标:转换时间、转换精度。要根据设计需要进行选择合适AD转换模块。
AD转换模块输出的数字量,可以送到CPU,如下:

根据实际需要,前端调理电路和AD转换电路,必须要受CPU的控制,CPU要告诉AD转换电路什么时候开始转换数据,同时要调整前端调理电路的放大倍数等关键参数。
因此,框架图进一步晚上如下:

AD转换电路,将数据输送给CPU后,CPU经过处理,输出的控制信号也是数字信号,因此需要将数字信号转换为模拟连续信号,即 Convert digital signals into analog continuous signals,记作,DA转换电路。
DA转换电路输出的信号,还要再进行放大,放大后的信号,还要滤波,这个部分,我们称之为后端调理电路。

大部分时候,CPU输出的数据,要显示出来,如下:

上图,就是电子信息系统的基本原理。
2 早期计算机的组成
2.1 五大元件
那CPU里面是什么呢?
要把这件事说清楚,还是从电子元器件讲起……
(1)第一个出场的是电容元件
时间可以追溯到1745年,清乾隆十年,英国 or 德国,说法不一,具体可以看看这个文章,谁发明了电容
(2)第二个出场的是二极管
谁发明的?同学们去看这篇文章,WHO INVENTED THE DIODE 谁发明了二极管。大家记住,时间+地点即可,时间:1873年,英国,那一年是 清朝 同治十二年。到今天大约是150年。
(3)第三个出场的是电阻元件
1885年英国C.布雷德利发明模压碳质实芯电阻器;
(4)第四个出场的是电感
术语“电感”是1886年由奥利弗·赫维赛德命名[1]。通常自感是以字母“L”标记,以纪念物理学家海因里希·冷次[2][3]。互感是以字母“M”标记,是其英文(Mutual Inductance)的第一个字母。采用国际单位制,电感的单位是亨利(Henry),标记为“H”,以纪念科学家约瑟·亨利。与其他物理量的关系:一亨利等同一韦伯除以一安培(1 H = 1 Wb/A)。
(5)第五个出场的是三极管
1906年,美国,李·德富雷斯特。三极管简介,发明了第一个电子放大器。到了20世纪60年代,MOS诞生了,详情见MOS的历史。
2.2 早期的计算机组成
朋友们,想象一下,时空穿越,我们回到了上世纪中叶。我们手里的东西就是上面说的电子元器件,现在让你来制造一个计算机,或者电脑,你会怎么办?
首先,这个“电脑”能思维,具体来说,就是运算。预算包括什么呢?加减乘除算数运算,也就是 arithmetic operation。还要会什么呢?与、或、非、异或等逻辑运算,也就是 Logical operation。因此,我们首先要设计既能算数运算,又能逻辑运算的算术逻辑单元 arithmetic Logical Unit, ALU。(话说,1945年数学家冯诺伊曼在一篇介绍被称为EDVAC的一种新型电脑的基础构成的报告中提出ALU的概念。)
如何设计ALU,这基本是数电的知识。
同学们,其实,ALU的作用就是一个算盘,那么问题来了,算盘听谁指挥呢? –控制器

我们需要再设计一部分控制ALU的电路,这部分电路就叫控制器。

由控制器去控制ALU何时去运算,以及如何运算。
自然,我们就会想到,ALU对哪些数据做运算呢?或者说,运算的数据从哪来呢?
需要运算的数据在一个地方存着,这个地方就叫存储器。 由控制器,控制存储器,将数据输送到ALU。

ALU运算后的数据,也可以存在存储器,所以:

同时,也有可能,ALU要处理 的数据来自由外部,由外部的输入设备输送数据给ALU,同时,输入设备也可以将数据传送到存储器。

输入是input,输出是output,我们将输入输出设备统一称为I/O设备。也就是说对于输入设备,称之为 I/O设备,对于输出设备,也称之为 I/O设备,而不是再去说 I 设备或 O 设备。
让我们再加上输出设备到框架图,不过多解释了。

好了,到这里,计算机早期的基本架构已经构建完成了。五大部分:ALU、控制器、存储器、输入设备和输出设备。
在之初,要设计这样的计算机,是很麻烦的。有的部件用电子管设计,有的用晶体管设计,而对于存储器,需要自己去绕磁芯。

经过这样设计的计算机,体积非常庞大的。

2.3 走入集成电路时期
到了60年代末70年代初,半导体技术噗噗噗地发展,这时候,半导体公司开始将计算机中的两个核心部件:ALU和控制器,集成到 silicon chip 中去,

也就是所谓的“芯片”,芯片中的控制器就是中央指挥机关,是大脑中的大脑。
因此,故弄玄虚的半导体公司将芯片称之为中央处理器, center processing unit,即CPU,问世了!!!
CPU芯片的体积非常小,因此也称为“微处理器”。


这里多说一句,计算机各部分之间交互信息是通过导线,而且不是一根导线,而是由一组导线,这一组一组的导线,我们就叫它bus,翻译为总线。

还没仔细梳理,有点乱大家看个热闹,会继续梳理出完。。。。。。。。。。。。晚安
相关文章:
STM32内部是怎么工作的
STM32是怎么工作的 1 从孩子他妈说起2 早期计算机的组成2.1 五大元件(1)第一个出场的是电容元件(2)第二个出场的是二极管(3)第三个出场的是电阻元件(4)第四个出场的是电感࿰…...
MyBatis的配置文件
目录 MyBatis配置 1.properties标签 2.typeAliases标签 3.Mappers标签 一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项,根据实际情况,可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。 这个配置文件包含了环境设置、数…...
MCU平台下确定栈空间大小的方法
本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时,Image文件被划分为代码区,数据区,BSS区,堆区,栈区。其中,代码区,数据区,BSS区空间大小由编译器…...
Flink系列之:SQL提示
Flink系列之:SQL提示 一、动态表选项二、语法三、例子四、查询提示五、句法六、加入提示七、播送八、随机散列九、随机合并十、嵌套循环十一、LOOKUP十二、进一步说明十三、故障排除十四、连接提示中的冲突案例十五、什么是查询块 SQL 提示可以与 SQL 语句一起使用来…...
机器学习算法---聚类
类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…...
gitlab ci pages
参考文章 gitlab pages是什么 一个可以利用gitlab的域名和项目部署自己静态网站的机制 开启 到gitlab的如下页面 通过gitlab.ci部署项目的静态网站 # build ruby 1/3: # stage: build # script: # - echo "ruby1"# build ruby 2/3: # stage: build …...
Web ML 库的Transformers.js 提供文本转语音功能
JavaScript 库 Transformers.js 提供了类似 Python Transformers 库的功能,设计用于在 Web 浏览器中直接运行 Transformer 模型,而不再需要外部服务器参与处理。在最新的 2.7 版本中,Transformers.js 引入了增强功能,其中包括文本…...
管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜E
老老规矩,看目录,平均每年2E,跟2D一样,D是全对,E是全错,侧面也看出10道题,大概是3A/B,3C,2D,2E,其实还是蛮平均的。但E为1道的情况居多。 第20题…...
【Linux基本指令(2)】
文章目录 一. 基本指令第二回 一. 基本指令第二回 cp指令语法 cp src dst 将目标文件或者目录拷贝到指定目录下或文件下。注意同级目录下,不允许存在同名文件或同名目录。如果将一个file.txt文件拷贝到当前目录下,就重名了,报错cp不了&#…...
Debian系统设置SSH密钥登陆
如果没有安装ssh,root权限运行apt install openssh-server进行安装。 ssh-keygen -t rsa # 生成配对密钥,后续一路enter即可会在用户目录(即~这个)下生成.ssh文件夹,里面的id_rsa是私钥,id_rsa.pub是公钥…...
uniapp cli开发和HBuilderX开发
uniapp cli开发和HBuilderX开发 前言 uniapp是一个跨平台的开发框架,可以开发出微信小程序、支付宝小程序、百度小程序、头条小程序、H5、App等,开发者只需要写一套代码,就可以发布到各个平台,大大提高了开发效率。 uniapp的开…...
【Java异常】idea 报错:无效的目标发行版:17 的解决办法
【Java异常】idea 报错:无效的目标发行版:17 的解决办法 一,问题来源 springcloud的第一个demo项目就给我干趴了 二、原因分析 java: 无效的目标发行版: 17 原因就是 JDK 版本不对。从 IDEA 编辑器中可以找到问题的原因所在,…...
代码提交规范-ESLint+Prettier+husky+Commitlint
代码提交规范-ESLintPrettierhuskyCommitlint 配置eslint (3步)配置prettier(4步)1.安装配置prettier2.设置忽略文件 .prettierignore3.处理eslint冲突4. 配置vscode 的settings.json husky安装并配置lint-staged(3步)安装配置com…...
手动实现 Vue 3的简易双向数据绑定(模仿源码)
Vue 3 带来了许多令人兴奋的新特性和改进,其中之一就是其双向数据绑定的实现方式。与 Vue 2 使用 Object.defineProperty 不同,Vue 3 利用了 JavaScript 的 Proxy 特性来创建响应式数据。在这篇博客中,我们将探讨 Vue 3 中双向数据绑定的基础…...
LVS最终奥义之DR直接路由模式
1 LVS-DR(直接路由模式) 1.1 LVS-DR模式工作过程 1.客户端通过VIP将访问请求报文(源IP为客户端IP,目标IP为VIP)发送到调度器 2.调度器通过调度算法选择最适合的节点服务器并重新封装数据报文(将源mac地址改为调度器的mac地址&am…...
t-SNE高维数据可视化实例
t-SNE:高维数据分布可视化 实例1:自动生成一个S形状的三维曲线 实例1结果: 实例1完整代码: import matplotlib.pyplot as plt from sklearn import manifold, datasets """对S型曲线数据的降维和可视化"&q…...
配置应用到k8s
配置应用到k8s,前置条件是安装了Docker,Minikube,kubectl 应用已经通过Docker生成本地镜像文件 1,创建godemo-deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: godemo-deploymentspec:replicas: 3 #启动三个…...
(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式
目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1)保护二极管及上、下拉电阻 2) P-MOS 管和 N-MOS 管 3)输出数据寄存器 3.1)ODR 端口输出数据寄存器 3.2)BSRR 端口位设置/清除寄存器 4&a…...
你知道跨站脚本攻击吗?一篇带你了解什么叫做XSS
1.XSS简介 (1)XSS简介 XSS作为OWASP TOP 10之一。 XSS中文叫做跨站脚本攻击(Cross-site scripting),本名应该缩写为CSS,但是由于CSS(Cascading Style Sheets,层叠样式脚本&#x…...
JVM入门
JVM概述 JVM位置 JVM体系结构 注意:栈中一定不存在垃圾,栈中数据用完一个弹出一个,总结来说,栈区、本地方法栈、程序计数器这三块必定不存在垃圾。JVM调优主要是针对方法区、堆(99%)进行调优。 常用的第三…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
