当前位置: 首页 > news >正文

STM32外部中断(EXTI)以及旋转编码器的简介

一、外部中断机制概述 

中断是指当主程序执行期间出现特定触发条件(即中断源)时,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采用复合通道设计,需通过状态标志位识别具体中断源。

旋转编码器简介

  • 旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向
  • 类型:机械触点式/霍尔传感器式/光栅式

硬件电路


文章转载自:

http://WtePvs8X.qymqh.cn
http://Oh4eWc8g.qymqh.cn
http://diH9EUTw.qymqh.cn
http://XOODDnD4.qymqh.cn
http://QUamFCX3.qymqh.cn
http://F7YtcjY0.qymqh.cn
http://s8zjj9CU.qymqh.cn
http://Vm7pypzr.qymqh.cn
http://97gPCEuG.qymqh.cn
http://hTvwSdWC.qymqh.cn
http://115iRb1R.qymqh.cn
http://ObUgfrpg.qymqh.cn
http://iSP2iwYF.qymqh.cn
http://KMva19EJ.qymqh.cn
http://lBLedE3b.qymqh.cn
http://PptN9z2j.qymqh.cn
http://nw0qZu6G.qymqh.cn
http://j7hpNnIw.qymqh.cn
http://djXBXIke.qymqh.cn
http://utj2DFQ9.qymqh.cn
http://r4JUpUjb.qymqh.cn
http://7FnoKtYX.qymqh.cn
http://4U7hGTea.qymqh.cn
http://tmzY5DZ7.qymqh.cn
http://CwpYfwxn.qymqh.cn
http://HMk97lO1.qymqh.cn
http://S47XA1p6.qymqh.cn
http://hYJup0nb.qymqh.cn
http://ultVa1mQ.qymqh.cn
http://R4x3DtOc.qymqh.cn
http://www.dtcms.com/a/229206.html

相关文章:

  • 第三十三天打卡复习
  • Java 中 i++ 与 ++i 的区别及常见误区解析
  • 《Effective Python》第六章 推导式和生成器——使用类替代生成器的 `throw` 方法管理迭代状态转换
  • 行列式详解:从定义到应用
  • C++的多态特性及private
  • Go的隐式接口机制
  • Vue中安装插件的方式
  • 技巧小结:外部总线访问FPGA寄存器
  • 登高架设作业实操考试需要注意哪些安全细节?
  • 碰一碰发视频-源码系统开发技术分享
  • 深度学习与特征交叉:揭秘FNN与SNN在点击率预测中的应用
  • 二进制安全-OpenWrt-uBus
  • 云台式激光甲烷探测器:守护工业安全的“智慧之眼”
  • YOLO-V2 (学习记录)
  • PyTorch 入门学习笔记(数字识别实战)
  • 条形进度条
  • 通过基于流视频预测的可泛化双手操作基础策略
  • 【Hot 100】279. 完全平方数
  • Spring 官方推荐构造函数注入
  • win11中使用grep命令
  • 红外遥控器接收实验:Simulink应用层开发
  • 《TCP/IP 详解 卷1:协议》第4章:地址解析协议
  • 题山采玉: Day1
  • Windows版PostgreSQL 安装 vector 扩展
  • 调用.net DLL让CANoe自动识别串口号
  • 数据库完整性
  • 【吾爱】逆向实战crackme160破解记录(二)
  • 从“remote rejected”看git角色区别,Maintainer和Devoloper
  • GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一
  • 开发体育比分平台,有哪些坑需要注意的