单片机(学习)2024.10.8

server/2024/12/22 15:05:00/

 ok家人们,国庆回来继续开始新的单片机的学习,这次学习的单片机芯片为STM32U575RIT6

计算机基础

IO逻辑

        计算机系统中的高低电平逻辑1和0,数据在计算机中的存储、传输、运算都是以二进制形式进行的。数据的传输通过总线真正传递的是电信号,高低电平。运算在电路中进行,集成电路中运算。

计算机的组成

1.输入设备:将其他信号转换为计算机可以识别的信号。

2.输出设备:将电信号转为人或其他设备能理解的信号。

3.运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALU,CPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加、减法等。

4.控制器:整个计算机的指挥中心

5.存储器:存放程序和数据的部件,也是计算机能够实现“存储程序控制”的基础。

ROM只读存储器

        掉电不丢失

        读取速度慢

        硬盘、U盘

        存储程序,ROM也叫程序存储器

RAM随机存储器

        掉电丢失

        速度快

        内存条

        存储临时变量和程序运行产生的数据

总线

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。

数据总线

        1.是CPU与内存或其他器件之间的数据传送的通道。

        2.数据总线的宽度决定了CPU和外界的数据传送速度。

        3.每条传输线一次只能传输1位二进制数据。如: 8根数据线一次可传送一个8位二进制数据(即一个字节)。

        4.数据总线是数据线数量之和。

地址总线

        1.CPU是通过地址总线来指定存储单元的。

        2.地址总线决定了cpu所能访问的最大内存空间的大小。如: 10根地址线能访问的最大的内存为1024个内存单元,即1024byte

        3.地址总线是地址线数量之和。

字节是存储的基本单位,位是存储的最小单位,8位和32位的区别是cpu的位数不同,也就是数据总线的个数不同

ALU

Arithmetic and Logic Unit 算术逻辑单元

ALU有两个单元,一个算术单元,一个逻辑单元

运算过程

ALU内部使用了大量的晶体管,这些晶体管合理分布使其能够实现预期功能,相应的,预期功能越大,所使用的晶体管越多。操作可能有很多,比如说加减(乘法可以使用多次加法代替)

给ALU传一个操作码,一般是4bit,这个操作码就可以表示相应的运算。操作码的作用就是告诉ALU你要对输入进行什么样的操作

根据操作码进行了指定的运算,并且输出了很多的标志位。

溢出标志位:比如说是否产生溢出,有溢出的话此位置1

零标志:运算结果为0时,零位置1;用于判断两个数是否相等

负标志位:如果结果是负值,此位置1

英特尔74181于1970年发布,是第一个封装在单个芯片内的完整ALU

指令集

CPU所支持的指令的集合

RISC精简指令集CPU:
体积小、功耗小、性能相对弱、指令集短

CISC复杂指令集CPU:
体积大、功耗大、性能强、指令集长

CPU组成与运行原理

程序由一个一个的操作组成,这些操作叫做指令。指令告诉CPU接下来要做的事情

CPU组成:

在CPU内需要存储单元来存储临时数据,这个存储单元叫寄存器 R0 R1

CPU需要一个寄存器来告知自己下一步要运行的指令是什么——PC程序计数器(存放的是下一条要运行指令的地址)

CPU需要一个寄存器来保存取到的指令——IR指令寄存器

CPU需要一个部件进行译码——指令译码器

CPU运行

 取指:控制器将PC寄存器中的地址发送给内存,内存将对应地址中的指令传给CPU中的IR指令寄存器

 译码:指令译码器对IR中的指令进行识别,将指令(机器码)解析(翻译)成具体的操作

 执行:根据所要运行操作,进行相应的动作。

CPU时钟

"时钟"会以精确的间隔触发电信号,CPU内部存在控制单元,这个控制单元会用这个信号推进CPU的内部操作,确保一切按步骤进行。

CPU取指-译码-执行的速度叫时钟速度,单位是HZ,HZ是频率的表示单位

超频

通常所说的超频,就是修改时钟速度,加快CPU的运行速度,能更高的压榨CPU性能

延迟问题

当CPU运行速度很快时,例如现在的CPU动辄运行速度就高达每秒钟上亿条指令,所以很小的延迟都会被放大,甚至有可能会导致系统出现问题。

当CPU去RAM读数据时,RAM需要找地址然后再取数据,再把数据输出

一条"从内存读数据的指令"可能需要多个时钟周期才能完成,这就造成CPU发出指令后下一个时钟周期无法按预定进行,发生CPU空等数据的情况。

方式一:高速缓存

给CPU加一点RAM叫"缓存",也叫高速缓存----->cache

方式二:指令流水线

1.先拿到CPU对应的指令集

2.根据指令集进行指令编配

3. 编译,将汇编文件转换成机器可以识别的二进制文件

 4.烧录(下载)机器码到芯片中去

编译流程

高级语言 .c文件

汇编语言 .s文件

机器语言 二进制文件(机器码)

DMA总线

        DMA(Direct Memory Access)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器及外设之间进行数据传递。作用:节省了CPU资源,提高CPU效率。

单片机基础

单片机简介

单片机是单片微型计算机的简称,MCU是Microcontroller的简称,也就是嵌入式微控制器。采用集成电路技术将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、定时器/计时器、多种I/O口和中断系统等功能集成到一块硅片上。可以说单片机就是一个小而完善的微型计算机系统。

单片机型号

51单片机(8051)

        国产:STC89C51 宏晶科技 STC

        外国:AT89C51 ATMEL

32单片机(通常说的就是ARM)

        外国:STM32 意法半导体 ST

        国产:GD32 兆易创新 GD

开发板/最小系统板

开发板

开发板通常是学习用途,功能比较全,接口丰富,是用于研发、研究、学习的一块板子。

显示屏

电容触摸显示屏在很多智能设备上得到应用,提升了设备的交互感。

资源扩展板

资源扩展板提供基于 I2C 总线的温湿度传感器、环境光感知、心率/脉搏测量。基于模数转换接口的电压/电流采集。资源扩展板主要用于微控制器入门外设的使用,硬件图纸原理以及项目案例的应用开发学习。

最小系统板

最小系统板是个核心板,集成了核心的通用功能,可以根据需求定制各种不同的底板,通用性较好。再者核心板作为一块独立的模块被分离出来,也降低了开发的难度,增加了系统的稳定性和可维护性通常用于做项目,也可以作为模块在产品里在直接用。

STM32

简介

STM32是意法半导体公司生产的32位的微型控制器

STM32U575RIT6

ST

意法半导体

M

微控制器

32

32位处理器

类型

F 通用/基础型 foundation G 多用途型 general-purpose

L 低功耗 low power H 高性能 High performance

S 简单/标准型 Standard U超低功耗

系列

0 精简系列 1/2/3 增强系列 4/7 高性能系列

子型号

00/01/02/03/05/07

引脚数量

K/6-32脚 C/8-48脚 R-64脚 V-100脚 Z-144脚

A-168脚 I-176脚 B-208脚 N-216脚

存储量

6 :32KB 8 : 64KB B :128KB C :256KB

D :384KB E : 512KB G :1MB I : 2MB

封装

U - UQFN封装 T - TQFP封装

工作温度

6 - -40 ~ 85度

STM32的优势

1.产品型号丰富,可选择性强;

2.运算速度快,功耗低;

3.处理器外设接口丰富;

4.库函数开发体系学习资料多,应用广泛。

STM32G0系统架构

● 二个主模块 :

– Cortex-M0+ 内核及先进高性能总线 (AHB bus)

– 通用 DMA (通用的直接存储器存取)

● 三个从模块 :

– 内部 FLASH

– 内部SRAM

– AHB和AHB到APB的连接桥,挂在APB总线上和AHB的外设

stm32存储器

ROM(只读存储器):掉电不丢失,掉电保护。

PROM(可编程的ROM)--可以烧入二进制文件,但是只能烧入一次。

EPROM(可擦除可编程的ROM):理论上可以烧入无数次,但是擦除的条件比较苛刻,需要紫外线照射。

EEPROM(电子可擦除可编程的ROM):擦除方便,但是写入速度慢一些。

Flash:结合了ROM和RAM的优点,因为其掉电不丢失特性,属于ROM,但其结合了RAM的特性,存储写入速度很快,缺点:贵,写入次数有限制

RAM(随机存储器)特点:掉电丢失

SRAM(Static)静态RAM:现存的存储速度最快的存储器,缺点:贵

flash和SRAM的区别?

1.flash掉电不丢失,SRAM掉电丢失

2.flash写入次数有限制,SRAM 理论写入无限次

3.SRAM读写速度更快一些

4.SRAM一般存放临时变量,flash存放程序--程序存储器

ARM体系结构

STM32U575RIT6采用ARM Cortex-M33内核架构

对ARM 的认识

1.公司名称

ARM是一家公司,ARM公司是一家芯片知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。

2.ARM可以表示一些处理器的统称

早期经典处理器:ARM7 ARM9 ARM11

Cortex-X系列 超高性能系列

Cortex-A系列

针对开放式操作系统的高性能处理器应用于智能手机、数字电视、智能平板等高端运用

Cortex-R系列

提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中针对实时系统、满足实时性的控制需求应于汽车制动系统、动力系统等

Cortex-M系列

单片机驱动的系统提供了低成本优化方案应用于传统的微控制器市场、智能传感器、汽车周边、物联网设备等

3.ARM也可以代表一种指令集---属于精简指令集

thumb指令集是对ARM的再次精简,ARM指令集32位,Thumb指令集16位

Cortex-M33的寄存器

通用寄存器 一个寄存器存储32位

R0-R12:13个通用寄存器。其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数

R13:栈指针寄存器 SP(the stack pointer),Cortex-M0 在不同物理位置上存在两个栈指针,主栈指针 MSP(main ),进程栈指针 PSP。

在处理模式下,只能使用主堆栈,在线程模式下,可以使用主堆栈也可以使用进程堆栈。 系统上电的默认栈指针是MSP。这样设计的目的是为了在进行模式转换的时候,减少堆栈的保存工作。同时也可以为不同权限的工作模式设置不同的堆栈。

R14:链接寄存器LR(the Link Register),用于存储子程序或者函数调用的返回地址

R15:程序计数器PC(the Program Counter register)存储下一条将要执行的指令的地址。

特殊寄存器

应用程序状态寄存器 (APSR):保存程序计算结果的状态标志 N负数标志 Z零标志 C进位借位标志 V溢出标志

中断程序状态寄存器 (IPSR):包含当前ISR(中断服务程序)的异常编号

执行程序状态寄存器 (EPSR):包含Thumb状态位 ---->运行Thumb指令集


http://www.ppmy.cn/server/129206.html

相关文章

力扣10.8

174. 地下城游戏 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数…

在ES6中,数组新增扩展及其用法汇总

在ES6中,数组新增了多项扩展,极大提高了操作数组的便捷性。以下是一些常用的扩展及其用法: 1. Array.from() 用于从类数组对象或迭代器创建一个新的数组实例。这个方法可以接受两个参数: source (来源):这是必须的参…

第五章:软件工程(5.5部署交付--5.7软件过程能力成熟度)

5.5 部署交付 5.5.1 软件部署 软件部署过程的主要特征有:过程覆盖度、过程可变更性、过程间协调和模型抽象。 已经提出一些抽象的软件部署模型,用于有效地指导部署过程,包括应用模型、组织模型、站点模型、产品模型、策略模型和部署模型。 软件部署模…

【JavaScript】JS核心语法及函数

文章目录 一、初识 JS二、JS 核心语法2-1 变量2-2 数据类型typeofString 对象 2-3 数组创建数组常用属性方法 2-4 运算符号加号运算符 减号运算符 -比较运算符逻辑运算符 2-5 控制语句for-inbreakcontinue 三、函数3-1 常用系统函数3-2 自定义函数函数声明函数调用 3-3 创建对象…

在线问诊APP开发,开启智慧医疗新模式

随着互联网医疗的不断发展,患者对线上问诊的需求逐渐增加。为了满足市场需求,提供便捷、高效的在线问诊服务。现在很多医院和诊所都着手互联网医院智慧医疗系统,利用在线问诊APP解决了医院每天要面对大量患者,医疗资源紧张&#x…

论文浅尝 | GenTKG:结合大语言模型的时间知识图谱生成式预测(NAACL2024)

笔记整理:喻靖,浙江大学硕士,研究方向为大语言模型 论文链接:https://arxiv.org/pdf/2310.07793 发表会议:NAACL2024 摘要 随着大语言模型(LLMs)的迅速发展,人们对时间知识图谱&…

[C++ 核心编程]笔记 1 内存分区模型

内存分区模型 C程序在执行时,将内存大方向划分为4个区域: 代码区: 存放函数体的二进制代码,由操作系统进行管理的。 全局区: 存放全局变量和静态变量以及常量。 栈区: 由编译器自动分配释放,存放函数的参数值、局部变量等。 堆…

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法(Greedy Algorithm),又名贪婪法,是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决…