zoukankan      html  css  js  c++  java
  • 10.2 External interrupt/event controller (EXTI)

    1. 主要特点:

    1. 每个中断/事件线上的独立触发器和掩码
    2. 每个中断行的专用状态位
    3. 生成最多20个软件事件/中断请求
    4. 脉冲宽度小于APB2时钟周期的外部信号检测。
    5. 每条中断线路的专用状态位生成最多20个软件事件/中断请求检测脉冲宽度小于APB 2时钟周期的外部信号。

    2. 概况

     根据上图可以看出,input line上的信号要想触发中断需经过:

    1. 边沿检测电路:(上升沿、下降沿、跳变沿)
    2. 软件中断事件寄存器(就是说你可以软件触发中断,即忽略input line的状态)
    3. 中断屏蔽寄存器(这里是个“与”,可以理解成中断开关:不置1的话是无法下一步的)
    4. 挂起请求寄存器(若由上步产生了中断则该位置1;向其写1则会清除该位)

    若是触发事件的话,则从第2步后经过事件屏蔽寄存器后触发事件。

    我们再来看 Input line是怎么来的:

     

    就是说一共有23根lines,前16根被用作GPIO的外部中断使用,后面的被其他外设使用。

    再来看用于GPIO的line,每一根line包含所有GPIO管脚的相同pin,如图所示。通过SYSCFG_EXTICRn的寄存器就可以选择每根line来着GPIO的哪个Port。

    注意:配置SYSCFG外设中的SYSCFG_EXTICRn的寄存器,需先开启SYSCFG外设的时钟(常识,但容易忘)。

     

    3. 用途

     3.1 硬件中断

    • 配置中断屏蔽寄存器(IMR, Interrupt Mask Register)
    • 配置触发条件(RTSR/FTSR, Rising/Falling Trigger Selection Register)
    • 配置NVIC中断的使能位与屏蔽位

     3.2 硬件事件

    事件,我的理解是SYSTEM内部的一些硬件类的操作,不同于中断的跳转。比如:唤醒(WFE)

    • 配置事件屏蔽寄存器(EMR, Event Mask Register)
    • 配置触发条件(RTSR/FTSR, Rising/Falling Trigger Selection Register)

     此部分,接触少,先按住不提。

     3.3 软件中断/事件

    就是用软件的方法触发硬件事件/中断,比如原来需要硬件的复位按键完成的功能,现在可以在通讯中满足一定条件由软件触发相应的功能。

    • 可不配置触发条件
    • 配置IMR/EMR
  • 相关阅读:
    java经常出现的异常
    后台采用springmvc框架 前台bootstrap 实现对话框编辑信息
    List集合与Array数组之间的互相转换
    freemarker 设置文本内容超过一定长度 用省略号代替
    bootstrap实现多个下拉框同时搜索
    jquery 循环遍历选中的多选复选框checkbox
    同时对数据库进行更新,添加与删除操作
    获取页面内容封装成json对象
    前台bootstrap按钮动态添加与删除
    set 遍历
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/9010479.html
Copyright © 2011-2022 走看看