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

STM32-EXTI中断

EXTI简介

EXTI(Extern Interrupt)外部中断
EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
支持的触发方式:上升沿/下降沿/双边沿/软件触发(程序执行代码指令)
支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
触发响应方式:中断响应/事件响应(外部中断发生时,可以选择不触发一个中断,而是触发一个事件)

EXTI基本结构

每个GPIO有16个口,和AFIO连接,AFIO又引出16个引脚和EXIT外部中断连接;AFIO是数据选择器,可以从前面的GPIO中,选择一个引脚连接到后面的EXTI 通道里,所以上面有说,相同的PIN不能同时触发中断,因为经过AFIO选择后,只有一个能接到EXTI的通道0上,也就没法同时触发中断了;

为了节省NVIC的资源,ST将9-5指向同一个NVIC,15-10也是同一个NVIC,同一个NVIC共用中断函数,使用这个几个中断的时候,需要在中断函数里根据标志位进行区分 ;下面有20条线到了其他外设,这个就是用来触发其他外设的,也就是事件响应;

AFIO复用IO口

所有的PIN0复用到EXTI0,这也是为什么同一个PIN同时只能有一个触发中断

AFIO主要用于引脚复用功能的选择和重定义

在STM32中,AFIO主要完成两个任务:复用功能引脚重映射(最开始引脚定义表里那个重定义功能)、中断引脚选择

EXTI框图

        20条输入线从右下角接入,经过边沿检测电路(上升沿/下降沿触发选择寄存器是可以配置的)上升沿触发/下降沿触发,软件中断事件寄存器(软件触发中断),然后经过或门后兵分两路,上一路是触发中断的(与门和中断屏蔽寄存器组成了一个开发,管控中断能不能响应),下一路是触发事件的(脉冲发生器会给一个脉冲,用来触发外设动作);

相关文章:

  • 社区街道治安智慧监管方案,AI算法赋能城市基层精细化治理
  • 2011年09月06日 Go生态洞察:Go语言的反射法则
  • 贰[2],QT异常处理
  • 2022美亚杯团队赛
  • uni-app 、Spring Boot 、ant Design 打造的一款跨平台包含小说(仿真翻页、段落听书)、短视频、壁纸等功能含完备后台管理的移动应用
  • 【面经】ES中分片是什么?副本是什么?
  • blender动画制作软件拓扑全流程
  • TensorFlow学习笔记--(2)张量的常用运算函数
  • debian 已安装命令找不到 解决方法
  • k8s ingress基础
  • OushuDB 专家认证第四期报名开始啦!
  • 常用排序算法实现
  • @JSONField或@JsonProperty注解使用
  • Vscode Vim自动切换
  • [Hive] CTE 通用表达式 WITH关键字
  • 2017年终总结、随想
  • gcc介绍及安装
  • HTTP请求重发
  • java 多线程基础, 我觉得还是有必要看看的
  • Java 最常见的 200+ 面试题:面试必备
  • Js基础——数据类型之Null和Undefined
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端路由实现-history
  • 通信类
  • 突破自己的技术思维
  • 限制Java线程池运行线程以及等待线程数量的策略
  • PostgreSQL之连接数修改
  • Spring Batch JSON 支持
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • (1)STL算法之遍历容器
  • (C语言)fread与fwrite详解
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (十一)手动添加用户和文件的特殊权限
  • (转) Android中ViewStub组件使用
  • .bat文件调用java类的main方法
  • .NET delegate 委托 、 Event 事件
  • .net 后台导出excel ,word
  • .NetCore 如何动态路由
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @ModelAttribute使用详解
  • [bzoj1038][ZJOI2008]瞭望塔
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
  • [HackMyVM]靶场 VivifyTech
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [k8s系列]:kubernetes·概念入门
  • [Matlab有限元分析] 2.杆单元有限元分析
  • [NOI2012]迷失游乐园