一、外部中断机制概述
中断是指当主程序执行期间出现特定触发条件(即中断源)时,CPU将暂停当前任务,转而执行相应的中断服务程序(ISR),待处理完成后恢复原程序的运行流程。该机制通过事件驱动方式显著提升系统效率,其优势在于可将中断事件与定时器任务从主循环中剥离,从而减少内核资源占用(例如避免使用阻塞式延时函数)。
二、中断优先级管理
在多个中断源并发请求的场景下,CPU需根据预设的优先级策略进行仲裁,优先处理紧急程度更高的中断请求。优先级机制包含两种类型:
1. 抢占优先级:允许高优先级中断打断正在执行的低优先级中断服务程序,形成中断嵌套
2. 响应优先级:决定相同抢占优先级中断的排队顺序
三、STM32中断体系架构
STM32微控制器提供多种可屏蔽中断通道,包括EXTI(外部中断)、定时器(TIM)、模数转换器(ADC)等,各通道均支持16级可编程优先级。其中嵌套向量中断控制器(NVIC)作为核心管理单元,负责优先级分配及与CPU的通信。
典型中断源示例:
- WWDG:窗口看门狗中断
- PVD:电源电压检测中断
- RTC:实时时钟中断
- FLASH:存储器操作中断
- EXTI0~15:外部引脚中断
四、中断向量与优先级分组
中断响应通过硬件自动跳转至中断向量表实现。NVIC采用4位优先级寄存器(取值范围0-15),可通过位域划分配置抢占优先级与响应优先级的比例。
五、外部中断(EXTI)工作原理
EXTI模块通过监测GPIO端口的电平变化(支持上升沿、下降沿及双边沿触发模式)向NVIC发起中断请求。其特点包括:
1. 所有GPIO端口均可触发中断,但同编号引脚(如PA0与PB0)不可同时使用
2. 除GPIO外,还支持PVD输出、RTC闹钟等唤醒事件
3. 提供20个中断/事件通道,其中:
- 中断模式:触发CPU中断服务
- 事件模式:直接联动其他外设而不中断CPU
应用场景建议:
- 适合处理高频信号(如旋转编码器)
- 对于长时信号(如按键输入),建议采用定时器中断
六、复用功能与引脚配置
AFIO(Alternate Function IO)模块主要实现:
1. 中断引脚选择:通过数据选择器将特定GPIO映射至EXTI通道(如EXTI0通道可配置为PA0/PB0/PC0等)
2. 特殊功能直连:PVD、USB等信号直接接入EXTI系统
3. 引脚功能重映射:支持外设功能的引脚重新配置
注:EXTI9_5与EXTI15_10采用复合通道设计,需通过状态标志位识别具体中断源。
旋转编码器简介
- 旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向
- 类型:机械触点式/霍尔传感器式/光栅式
硬件电路