
GPIOGenral Purpose Input/Output通用目的输入输出引脚输入输出 两种工作模式1. 输出模式给定单片机引脚电平控制引脚输出高/低电平LED控制、数码管控制、蜂鸣器控制2. 输入模式检测引脚电平变化用于检测外部电平信号 按键检测、检测ADC信号独立按键1. 按键一端接到GND另外一端接到GPIO引脚2. 如果按键被按下GND会和引脚短路到一起此时引脚呈现低电平代表按键被按下void key_init(void) { // 1. 将按键对应的引脚置1 } int key_press(void) { }中断CPU在处理某个任务时被外界更为紧急的事件打断要求CPU优先去处理 这个更为紧急的事件处理完紧急事件后再回到之前被打断的地方继续向下执行中断源打断CPU执行当前的任务源头/事件中断源分类外部中断0、外部中断1、定时器0、定时器1、串口外部中断引脚电平变化所引发的中断中断优先级CPU总是先处理优先级高的中断处理完优先级高的中断后再处理优先级 低中断中断向量表本质是一个数组数组中存放的是中断服务函数的入口地址 //interrupt 0中断向量中断向量表中的标号通过标号可以访问到对应中断服务函数中断嵌套CPU处理一个中断时再去嵌套另外一个中断任务最多两层嵌套中断处理流程中断源 - CPU过程1. 中断源发出中断请求2. 检查CPU是否允许中断总开关 能够响应外部中断及该中断源是否被屏蔽子开关 能够产生对应的中断3. 比较中断优先级4. 保护现场5. 执行中断服务函数(回调函数)6. 恢复现场定时器实现精准的定时外设对时序要求比较高unsigned short cnt 01. 赋初值cnt 645352. 打开计数器开始计数3. 按照固定的频率. 计数器加到65535 1 - 溢出 - CPU 定时器中断请求从初值 溢出 - 所经历的时间1. 初值大小2. 频率1ms的精准定时晶振频率12MHZ 11.0592MHZ51单片机实际工作频率12MHZ 11.0592 / 12 1MHZ 0.9MHZ时间1 / 1MHZ 1us 1 / 0.9MHZ 1.1us1ms定时1ms 1000us计数次数1000us / 1us 1000定时器初值65535 - 1000 64535PWM:脉冲宽度调制能够让引脚产生一个方波能够让引脚周期性产生电平变化PWM周期一个方波所经历的周期上升沿/下降沿到下一个上升沿/下降沿所经历的时间PWM占空比在一个周期内高电平所占的比例LCD屏幕亮度调节、LED灯亮度调节、蜂鸣器蜂鸣器有源蜂鸣器内部存在震荡源通电后可以发出持续固定频率的声音无源蜂鸣器不存在震荡源需要给定对应引脚一个高低电平产生震荡可以输出指定频率音调