单片机相关知识点
文章目录
- 单片机相关知识点
- 一,了解嵌入式和单片机
- 1.1 什么是嵌入式
- 1.1.1 定义
- 1.1.2 特点
- 1.2 什么是单片机
- 1.2.1 定义
- 1.3 思维导图
- 1.4 单片机的硬件特性
- 1.5 单片机启动流程
- 二,单片机相关知识点
- 2.1 GPIO
- 2.1.1 GPIO 概述
- 2.1.2 GPIO 的输入输出模式(STM32 为例)
- 2.2 串口
- 2.2.1 串口的用途
- 2.2.2 串行和并行
- 2.2.3 异步和同步串行通信
- 2.2.4 单工,半双工和全双工串行通信
- 2.2.5 比特率和波特率
- 2.3 中断
- 2.3.1 中断是什么
- 2.3.2 中断的特点
- 2.3.3 中断协作
- 2.3.4 中断分类
- 2.3.5 中断优先级
单片机相关知识点
一,了解嵌入式和单片机
1.1 什么是嵌入式
1.1.1 定义
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。
1.1.2 特点
嵌入式系统的硬件和软件必须根据具体的应用任务,以功耗、成本、体积、可靠性、处理能力等为指标来进行选择。嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求软件代码紧凑、可靠,且对实时性有严格要求。从构成上看,嵌入式系统是集软硬件于一体的、可独立工作的计算机系统;从外观上看,嵌入式系统像是一个**“可编程”的电子“器件”;从功能上看,它是对目标系统(宿主对象)进行控制**,使其智能化的控制器。
1.2 什么是单片机
1.2.1 定义
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
1.3 思维导图
我们可以把计算机技术分为五个部分:单片机基础,时钟与晶振,GPIO 与中断,通信协议,RT-Thread 系统。
单片机基础
- 单片机是一种集成电路,集成了 CPU,RAM,ROM 等多种功能。
- 单片机的硬件特性包括体积小,集成度高,低电压低功耗等。
- 单片机的启动流程包括上电复位,时钟初始化,外设初始化等步骤。
时钟与晶振
- 时钟为单片机提供工作频率,常见的时钟源有 HSL,HSE,PLL等。
- 晶振通过电压效应产生谐振,提供稳定的时钟信号。
- 通过 PLL 可以将 8MHz 晶振倍频至 72MHz,提高时钟频率的稳定性。
GPIO 与中断
- GPIO 口有输入和输出两种工作模式,支持浮空,上拉,下拉等配置。
- 中断用于快速响应外部事件,提高 CPU 效率,支持优先级设置。
- EXTI 控制器用于检测外部信号的变化边沿,并产生中断。
通信协议
- 串口通信分为异步和同步,支持单工,半双工和全双工三种模式。
- SPI 是一种高速全双工通信协议,支持主从模式和多种时钟模式。
- IIC 是一种串行通信协议,支持多主从架构,使用 SCL 和 SDA 两根线。
RT-Thread 系统
- RT-Thread 是一个实时操作系统,支持多任务调度和优先级管理。
- RT-Thread 的启动流程包括硬件初始化,调度器启动和任务创建等步骤。
- RT-Thread 支持信号量,互斥量,事件等多种任务间通信机制。
1.4 单片机的硬件特性
单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。
单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。
单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。
单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。
成本低,更适合在嵌入式领域应用。
**总结:**一个微控制器(MCU–单片机)的组成?最小系统板包含哪些内容?
晶振(时钟),电源 ,复位(上电复位)。复位电路的作用?
单片机刚开始上电的时候,避免电压波动对单片机工作的影响,所以说先要复位(类似与按键的物理消抖)。
1.5 单片机启动流程
MCU上电(复位)时,从固定的地址启动,一般是地址0x00000000,如ARM7;个别特殊的如STM32默认启动地址为0x8000000(flash区启动)。STM32的内部闪存地址起始于0x8000000,一般情况下,程序文件就从此地址开始写入。此外STM32是基于Cortex-M3内核的微控制器,其内部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量(上面的Reset_Handler)执行复位中断程序完成启动。
常规模式总结:大家一定要看启动文件:
二,单片机相关知识点
2.1 GPIO
2.1.1 GPIO 概述
GPIO(General Purpose Input/Output)是STM32微控制器最基本、最常用的外设之一,用于
与外部设备进行数字信号交互(如控制LED、读取按键、驱动传感器等)。
咱们学习 Hi3861 中利用 GPIO 完成了 LED 控制,按键控制,传感器数据读取,蜂鸣器控制,利
用 GPIO 模版 PWM 控制舵机。GPIO 的控制核心逻辑:
- 输入输出控制
- 高低电平控制
在当前 STM32F103ZET6 中一共有:
- 7 组 GPIO 分别对应 GPIOA ~ GPIOG 分组;
- 同时每一个 GPIO 分组对应 16 个对外引脚,流入 GPIOA00 ~ GPIOA15 ==> PA0 ~ PA15;
- STM32F103ZET6 对外可以提供可编程 GPIO 引脚一共是 16 * 7 ==> 112 引脚。
2.1.2 GPIO 的输入输出模式(STM32 为例)
- 哪一组 GPIO,例如 GPIOB
- 操作的 GPIO 是当前组内第几个 Pin 引脚, 对应引脚为 5 引脚 ==> PB5
- 设置 GPIO 的工作模式
I/O 端口位的基本结构
浮空输入模式(Floating Input)
- **原理:**在这种模式下,GPIO 引脚没有接上拉电阻或下拉电阻,其电平状态完全取决于外部电
路。引脚处于高阻抗状态,输入电流几乎为零。- **应用场景:**适用于外部信号已经有明确的驱动能力和电平状态的情况,比如连接按键,按键
按下时直接将引脚接地,松开时引脚浮空,通过读取引脚电平判断按键状态。
上拉输入模式(Pull - up Input)
- **原理:**GPIO 引脚内部连接了上拉电阻,当外部电路没有对引脚进行驱动时,引脚电平被上拉
到高电平。如果外部电路将引脚拉低,那么引脚电平就为低电平。- **应用场景:**常用于按键输入,当按键未按下时,引脚通过上拉电阻保持高电平;按键按下
时,引脚接地变为低电平,避免了引脚浮空可能带来的电平不稳定问题。
下拉输入模式(Pull - down Input)
- **原理:**与上拉输入模式相反,GPIO 引脚内部连接了下拉电阻,当外部电路没有对引脚进行驱
动时,引脚电平被下拉到低电平。如果外部电路将引脚拉高,那么引脚电平就为高电平。- **应用场景:**同样适用于按键输入等场景,当按键未按下时,引脚通过下拉电阻保持低电平;
按键按下时,引脚接高电平。
模拟输入模式(Analog Input)
- **原理:**该模式下,GPIO 引脚用于模拟信号的输入,内部的数字逻辑电路被断开,引脚直接连
接到模拟信号处理模块,如 ADC(模拟 - 数字转换器)。- **应用场景:**用于采集模拟信号,如温度传感器、压力传感器等输出的模拟电压信号,通过
ADC 将模拟信号转换为数字信号进行处理。
开漏输出模式(Open - Drain Output)
- **原理:**在开漏输出模式下,GPIO 引脚内部的输出级只有 N 沟道 MOS 管,当输出为低电平
时,MOS 管导通,引脚接地;当输出为高电平时,MOS 管截止,引脚处于高阻态,需要外
部接上拉电阻才能输出高电平。- **应用场景:**常用于实现线与功能、I2C 总线等通信协议,多个开漏输出引脚可以连接在一
起,只要有一个引脚输出低电平,总线就为低电平。
推挽输出模式(Push - Pull Output)
- **原理:**推挽输出模式下,GPIO 引脚内部的输出级由 P 沟道 MOS 管和 N 沟道 MOS 管组成。
当输出为高电平时,P 沟道 MOS 管导通,引脚输出高电平;当输出为低电平时,N 沟道
MOS 管导通,引脚输出低电平。- **应用场景:**适用于直接驱动一些负载,如 LED 灯,能够提供较强的驱动能力。
复用开漏输出模式(Alternate Function Open - Drain Output)
- **原理:**该模式下,GPIO 引脚的功能由片上外设控制,输出级采用开漏输出结构。与普通开漏
输出模式类似,需要外部接上拉电阻才能输出高电平。- **应用场景:**常用于一些通信协议和外设接口,如 SPI 总线的某些引脚、I2C 总线等,将 GPIO
引脚复用为外设的特定功能。
复用推挽输出模式(Alternate Function Push - Pull Output)
- **原理:**此模式下,GPIO 引脚的功能由片上外设控制,输出级采用推挽输出结构,能够直接输
出高电平和低电平。- **应用场景:**常用于一些需要较强驱动能力的外设接口,如 UART 通信的发送引脚、PWM 信
号输出等。
2.2 串口
2.2.1 串口的用途
- 硬件中数据传递的一种方式,对应 USART 和 UART。包括 RS485 RS232 CAN ;
- 主要用户是按照【串行数据传递形式】完成设备之间的数据通信。
2.2.2 串行和并行
机器的通信方式有两种,分别是并行通信与串行通信。
**并行通信:**并行通信是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错(了解)。
**串行通信:**串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
串行通信和并行通信的特性对比:
2.2.3 异步和同步串行通信
串行通信有两种,分别是异步串行通信与同步串行通信。两种串行通信不同就只有时间,在发送字符时,异步可以是不同时间间隔发送,但同步只能以固定的时间间隔发送。
**异步串行通信:**异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传输单位且发送方传送字符的间隔时间不一定,具有不规则数据段传送特性的串行数据传输。
主设备(Master)和从设备(Slave),数据发送和接收**【时钟总线】不同**
- 主设备数据位,字节和从设备数据位,字节,直接的时间关系无所谓。假设主设备进行数据发送,从设备等了两年半之后接收数据。【异步】。
- 数据内容必须有明确的【起始标记】和【终止标记】。
**同步串行通信:**同步串行通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。
主设备(Master)和从设备(Slave),数据发送和接收**【时钟总线】步调一致**
- 主设备和从设备之间进行数据传递。主设备数据位,字节和从设备数据位,字节时钟一致。【同步状态】。
2.2.4 单工,半双工和全双工串行通信
串行通信制式有单工串行通信,半双工串行通信,全双工串行通信三种。
- **单工串行通信:**单工串行通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。
- **半双工串行通信:**半双工串行数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。
- **全双工串行通信:**全双工串行通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的频率上(两个频率差有一定要求)能同时进行工作的双工机也称为异频双工机。
- 三种通信制式很容易理解,对照上图看,单工串行通信不就是单方面通信,只能发出指令或接收指令。半双工串行通信就是能接收又能发送,但是不能同时进行。全双工串行通信就最厉害,可以同时发送和接收指令。
2.2.5 比特率和波特率
2.2.5.1 比特率
**定义:**比特率是指单位时间内传输的二进制比特(bit)的数量。
**单位:**比特每秒(bps, b/s),如 kbps, Mbps。
**关注点:**数据传输的效率。
**计算公式:**比特率 (Rb) = 波特率 (Rs) × 每个符号承载的比特数 (m)
2.2.5.2 波特率
**定义:**波特率是指单位时间内通信线上信号符号变化的次数。一次变化称为一个波特。
**单位:**波特(Baud)。
**关注点:**信号的调制速度。
**计算公式:**波特率 (Rs) = 比特率 (Rb) / 每个符号承载的比特数 (m)
2.2.5.3 区别与联系
- 核心区别
比特率:衡量有效信息的传输速度。
波特率:衡量信号符号的变化速度。
- 可以把通信想象成运货:
比特率关心的是每秒从A地运到B地多少公斤(公斤/秒)的货物。
波特率关心的是每秒从A地发出多少辆卡车(辆/秒)。
至于每辆卡车能装多少公斤货物(一个符号代表几个比特),那是另一回事。
特性 | 比特率 | 波特率 |
---|---|---|
衡量对象 | 数据量(信息量) | 信号变化次数(符号率) |
核心问题 | 每秒传多少比特 | 每秒信号变化多少次 |
单位 | bps (bits per second) | Baud (Symbols per second) |
关系 | 比特率 ≥ 波特率 | 波特率 ≤ 比特率 |
依赖关系 | 由波特率和调制方式共同决定 | 由信道带宽和调制方式决定 |
2.2.5.4 总结
区别:比特率是信息速度,波特率是符号速度。
**联系:**比特率 = 波特率 × log₂(M),其中M是调制符号的总数。
**关键点:**在简单的二进制调制下(m=1),二者数值相等,因此常常混用“波特率”和“比特率”。但在现代高速通信中(如Wi-Fi, 4G/5G),由于采用了高阶调制(m>>1),所以比特率远大于波特率。
2.3 中断
2.3.1 中断是什么
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并且立即转入处理新情况的程序(中断服务函数),处理完毕后又返回原被暂停的程序继续运行。
2.3.2 中断的特点
- 中断是属于内核的,中断本身也是一种异常,此种异常是可控,我们称为中断。
- 中断操作是针对于特定的事件/行为,进行特定的处理操作。需要【触发机制】和【注
册行为】。- 中断的作用主要是为了提高CPU的工作效率。
- 中断的特性:快速响应,只要触发的事件满足,就会立即执行中断服务函数。
- 中断服务函数:快进快出,不能存在大量的延时函数,或者循环语句,一般都是用于获取某个事件标志,具体的执行内容,我们可以自己编写功能函数。
2.3.3 中断协作
- 断点 :注册的中断触发位置,一般对应电平跳变,寄存器标志位变化。
- 中断源 : 当前中断注册的功能函数/中断服务函数。
- 压栈 : 中断触发,会将断点对应函数压栈操作,转换后台函数。
- NVIC:管理中断,负责中断进入和中断退出,中断优先级设置等。
2.3.4 中断分类
**内核中断/内部中断:**芯片内部中断,也可以称之为【异常 Exception】。可以任务是程序在
正常情况下,出现不同于平常的数据情况,可以是错误,可以是标记。一般关注的是寄存器
中的中断标志位。
**外设中断:**Cortex-M3 内核 预留了外部中断控制线,可以通过外部中断控制线高低电平切
换,出现上升沿和下降沿进行中断触发。
2.3.5 中断优先级
中断优先级是由**【占先优先级】**和 **【次级优先级】**两部分组成:
- **占先优先级:**多个中断触发时,MCU 首先根据占先优先级判断,哪一个优先级高,其他中断
进入等待等待状态。【占先优先级谁高谁执行】。- **次级优先级:**同时存在多个相同 占先优先级 中断存在,此时 MCU 按照次级优先级来决定执
行顺序。但是如果此时有其他中断正常执行,不允许打断中断执行效果。【同步进入,谁高
谁执行,如果中断已执行,其他中断不得抢占】。