一、GPIO概念与输入输出的分类
概念:Genral Purpose Input Output,通用输入输出,是与外界交互最基本的形式,可以独立的将
引脚配置为输入模式/输出模式。
分类:输出模式:控制引脚输出高电平/低电平(给定控制信号)
| 名称 | 功能 |
|---|---|
| 开漏输出 | 通过 PMOS 上拉管和 NMOS 下拉管交替导通,直接输出高低电平,驱动能力强 |
| 推挽输出 | 仅由 NMOS 下拉管构成,低电平直接导通,高电平需外接上拉电阻,支持线与功能。 |
| 复用开漏 | 引脚功能归属外设(如串口、SPI),由外设控制推挽结构输出对应电平信号 |
| 复用推挽 | 引脚功能归属外设,由外设控制开漏结构工作,高电平需依赖外部上拉电阻实现。 |
输入模式:检测引脚的电平(接收外部信号)
| 名称 | 功能 |
| 上拉输入 | 引脚内部接入上拉电阻,无外部信号时默认读取高电平,适配开关、按键等输入场景。 |
| 下拉输入 | 引脚内部接入下拉电阻,无外部信号时默认读取低电平,防止引脚悬空引入干扰。 |
| 浮空输入 | 引脚内部无上下拉电阻,电平状态完全由外部输入决定,多用于精准的外部信号采集。 |
| 模拟输入 | 引脚关闭数字电路,直接连接 ADC 采样模块,用于接收和转换连续变化的模拟电压信号。 |
|---|
二、独立按键
2.1原理图

2.2工作原理
采用上拉输入模式的按键电路,按键未按下时引脚默认高电平,按下时引脚与 GND 短路变为低电平,程序只需检测引脚是否为低电平即可判断按键是否按下
三、中断
3.1中断的概念
当CPU正在执行某个任务的时候,此时外界发生了一个紧急的事件,要求CPU能够暂停当前的任务,转而去执行这个更为紧急的事件,执行完这个紧急事件再回到刚才被打断的地方,继续执行,这个过程叫做中断。
3.2中断源
能够打断CPU执行当前任务的源头/事件
3.3中断的分类
外部中断:引脚电平的变化所引发的中断。
| 功能名称 | 对应引脚 | 功能说明 |
|---|---|---|
| 外部中断0 | P32 | 低电平 / 下降沿触发中断 |
| 外部中断1 | P33 | 低电平 / 下降沿触发中断,同 INT0 按键应用逻辑 |
| 定时器0 | P34 | 定时器 / 计数器功能引脚,纯定时使用时无需外部接线 |
| 定时器1 | P35 | 定时器 / 计数器功能引脚,串口波特率发生器常用,纯定时无需外部接线 |
| 串口通信 | 发送端 TX:P31 接收端 RX:P30 | 单片机串口收发核心引脚,一收一发完成串口数据通信 |
3.4 中断优先级
当CPU在执行一个任务的时候,此时可能有多个中断源同时发起中断请求,此时CPU
比较中断源的优先级,优先处理优先级高的中断

3.5中断嵌套
CPU在处理一个中断任务的时候,再去嵌套另外的一个中断任务(51单片机中最多允
许嵌套两层)
3.6中断处理流程
- 中断源发出中断请求
- 检查CPU是否允许中断及该中断源是否被屏蔽
- 比较中断优先级
- 保护现场
- 执行中断处理函数(回调函数)
- 恢复现场
3.7中断相关寄存器

(1)中断允许寄存器 IE寄存器

EA:
- 置1:代表CPU允许所有中断请求
- 置0:代表CPU屏蔽所有的中断请求
EX0:
- 置1:允许外部中断0产生中断
- 置0:禁止外部中断0产生中断
(2)定时器/计数器终端控制寄存器TCON寄存器

ITO:
- 置1:代表外部中断0引脚(P32引脚)下降沿触发中断
- 置0:代表外部中断0引脚(P32引脚)低电平触发中断
四、定时器
4.1定时器概念
- 产生精准时间,不同外设对时间要求是精准的
- 51单片机中有两个定时器,分别是Timer0和Timer1,是自增型定时器
4.2定时器工作原理
定时器内部有个16位的计数器,给定计数器一个初值,会按照1us的速率进行自增,加到65535溢出时向CPU发起中断请求,CPU响应定时器中断并执行中断处理函数
4.3定时寄存器

- 将TMOD寄存器中的低4位清0
- 将M0置1,M1清0,代表定时器0工作在16位定时器模式下
4.4 TCON定时控制寄存器

将TCON寄存器中的TR0这一位置1,代表打开定时器,开始计数。

将IE寄存器中的bit7和bit1置1,代表允许CPU响应所有中断 + 允许定时器0产生中断。
五、PWM
定义:脉冲宽度调制,能够让引脚产生一个方波,让引脚电平周期性的翻转。
周期:一个方波所经历的周期(从上升沿/下降沿到下一个上升沿/下降沿所经历的时间)。
占空比:高电平在一个PWM周期内所占的比例。
六、蜂鸣器
原理图

震荡源 声音(波)-> 音调 -> 波的频率发生了变化 -> 高音 (高频) 低音(低频)-> 音量 -> 振幅能量大小
- 有源蜂鸣器:有源蜂鸣器内部有震荡源,上电后会持续发出一个固定频率的声音
- 无源蜂鸣器:无源蜂鸣器内部没有震荡源,需要给定蜂鸣器一个震荡