1、中断系统
中断: 在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。
2、中断执行流程
中断程序一般在主函数里面,由硬件自动调用
3、STM32中断
-
68个可屏蔽中断通道,包含EXTI外部中断、TIM定时器、ADC模数转换器、USART串口、SPI通信、I2C通信、RTC实时时钟等多个外设
使用NVIC(STM32中用来管理中断,分配优先级)统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级
灰色的是内核的中断,一般用不到。
不是灰色部分就是外设的中断
WWDG: 窗口看门狗,用来检测程序状态的中断,比如程序卡死,有没有及时喂狗,窗口看门狗就会立即申请中断。
EXBI0 - EXBI15_10:就是外部中断
中断的地址又是中断向量表。
4、NVIC基本结构
NVIC是内核外设,用来帮助CPU的
/ n: 表示一个外设可能占用多个中断通道,所以这里有n条线。
NVIC根据每个中断的优先级分配顺序输出到CPU。
5、NVIC优先级分组
-
NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。
-
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。(中断号就是表里面的序号)
6、EXTI简介
EXTI(Extern Interrupt)外部中断
EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
支持的触发方式:上升沿/下降沿/双边沿/软件触发
上升沿:电平从低电平变到高电平的瞬间触发中断
下降沿:电平从高电平变到低电平的瞬间触发中断
双边沿:支持上升沿下降沿都触发中断
软件触发:程序里面执行一句代码触发中断
支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(PA0和PB0不能同时用PA6和PA7就可以)
通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
触发响应方式:中断响应/事件响应(可触发其他功能)
7、EXTI基本结构
EXTI5-9在一个口 EXTI 10-15在一个口
8、AFIO复用IO口
-
AFIO主要用于引脚复用功能的选择和重定义
-
在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择
9、EXTI框图
弯的是或门:多个输入,只有一个输出。 只要有一个是高电平1,输出就是高电平1。
直的是与门:多个输入一个输出。只有有一个输入低电平,输出就是低电平。
三角形加个圆圈的是非门:输入1输出0。
上面AFIO中的梯形是选择控制器,在侧面的选择控制端来选择接入数据。
10、旋转编码器简介
-
旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向
-
类型:机械触点式/霍尔传感器式/光栅式