(续接上篇)
3. GPIO
Genral Purpose Input Output:通用目的输入输出
3.1 输出模式
给定引脚电平,控制引脚高低电平的变化
- 推挽输出
- 开漏输出 LED 数码管
- 复用推挽
- 复用开漏
3.2 输入模式
检测引脚电平变化
- 上拉输入
- 下拉输入
- 浮空输入
- 模拟输入
4. 中断
4.1 概念
4.1.1 中断
当CPU执行某个任务时,外界发生了一个紧急事件,要求CPU放下 当前的任务,转而去执行这个更为紧急的事件,执行完紧急事件后再回到 原来被打断的地方继续向下执行
4.1.2 中断源
打断CPU执行当前任务的源头/事件
5个:外部中断0、外部中断1、定时器0、定时器1、串口
4.1.3 中断优先级
CPU去执行中断任务时,会去比较多个中断的优先级 优先去执行优先级更高的中断
51单片机中最多允许中断嵌套两层
4.2 中断处理流程
-
中断源发出中断请求
-
检查CPU是否响应中断(总开关)及该中断源被屏蔽(子开关)
-
比较中断优先级
-
保护现场
-
执行中断服务函数
-
恢复现场
中断向量表:本质就是一个数组,数组中存放的是中断服务函数入口地址
中断向量:本质上是一个标号,可以通过标号在中断向量表中找到中断服务函数的 入口地址
4.3 外部中断
4.3.1 概念
引脚电平的变化所引发的中断(P3_2 P3_3)
4.3.2 流程

4.4 定时器
- timer0 计数器0
- timer1 计数器1
16位模式定时器 65535 自增型定时器
4.4.1 初值计算
clock 时钟
CPU工作频率
12MHZ -> 定时器
11.0592MHZ -> 波特率
分频器
12MHZ / 12 = 1MHZ
11.0592MHZ / 12 = 0.9216MHZ
时间: 1 / 1MHZ = 1us 1 / 0.9216MHZ = 1.085us timer 0 1ms
定时: 1ms = 1000us 1000us / 1us = 1000 922
初值:65535 - 1000 = 64535 12MHZ 64,613 11.0592MHZ
4.4.2 流程

4.5 蜂鸣器
4.5.1 PWM
脉冲宽度调制 :能够使引脚产生一个方波 PWM可以让引脚电平周期性进行翻转
PWM周期:一个PWM方波所经历的时间(从上升沿/下降沿到下一个上升沿/ 下降沿所经历的时间)
PWM占空比:高电平在一个周期内所占的比例
4.5.2 震荡源
波 -> 音调不同 :高音 高频 、低音 低频
音量 -> 振幅大小
4.5.3 分类
- 有源蜂鸣器:内部会存在震荡源,上电后蜂鸣器会发出固定频率的声音
- 无源蜂鸣器:内部不存在震荡源,上电后不会发出声音,需要给定一个震荡