STM32-外部中断

1.什么是中断:

        CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务,这一过程便是中断。

2.NVIC:

  • NVIC(Nested Vectored Interrupt Controller) 内嵌向量中断控制器
  • 当中断发生时,NVIC 将比较新中断与当前中断的优先级

3.NVIC优先级:

  • 抢占优先级
    • 抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
    • 对抢占优先级的级别划分
  • 响应优先级
    • 响应属性由NVIC_IRQChannelSubPriority 参数配置。
    • 相同抢占优先级的优先级别的划分。
  • 中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级

    A和B抢占优先级相同,则A、B的响应优先级决定谁先响应。

4.AFIO:

  • AFIO(Asynchronous File I/O),即“备选功能输入/输出”。
  • 用来控制外设功能和管脚映射,它可以为每个GPIO管脚指定一个替代功能,比如USART、SPI、I2C、ADC等外设功能。
  • 通过AFIO模块,可以将多个外设映射到同一个GPIO管脚上,这样可以节省管脚资源。 

5. EXTI 外部中断:

  • EXTI(External interrupt/event controller)外部中断/事件控制器
  • ARM Cortex-M系列处理器中的外部中断模块,它允许外部设备向处理器发送中断请求。
  • 支持的触发方式:上升沿/下降沿/双边沿/软件触发
  • 当一个外部中断请求发生时,EXTI外设会将中断请求发送给NVIC,NVIC根据中断请求的优先级和设置的中断优先级进行处理。处理完成后,NVIC会向EXTI外设发送一个中断清除信号,清除中断请求并允许下一次中断请求。
  • 触发响应方式:中断响应/事件响应
    • 事件模式下,当一个中断请求发生时,处理器会执行对应的中断处理程序,但不会向NVIC发送中断清除信号。
    • 中断模式下,当一个中断请求发生时,处理器会执行对应的中断处理程序,并向NVIC发送中断清除信号。

6.EXTI 功能框图:

注释:

  •  蓝色1:代表20个通道
  •  绿色2:或门 A || B,多个输入,一个输出。执行的逻辑。有 1 就为 1  全部为0则为0
  •  黄色3:与门 A&&B,多个输入,一个输出。执行的逻辑。输入都为 1 才输出 1

分析:

  1. 输入线
  2. 边沿检测电路 (上升沿触发选择寄存下降沿触发选择寄存器的设置来控制信号触发
  3. 或门: 信号输入来自边沿检测电路,另外一个输入来自软件中断事件寄存器
  4. 触发中断:请求挂起寄存器(判断事件是否发生,为 1 则事件发生,为 0 则挂起状态;)——与门  (相当于开关,中断屏蔽寄存器1则输入1,置0则输入0)——NVIC中断控制器
  5. 触发事件:与门(相当于开关,事件屏蔽寄存器1则输入1,置0则输入0)——脉冲发生器——其他外设

配置步骤:

  • 第一步:配置RCC使能必要外设——GPIOB,AFIO

  • 第二步:配置GPIO——结构体的定义,指定引脚,速度配置,工作模式配置,初始化GPIO

  • 第三步:配置AFIO——选择使用哪一路的GPIO与后面的EXTI相连

  • 第四步:配置EXTI——选择触发响应方式(中断响应和事件响应),选择边沿触发方式(上升沿,下降沿,双沿)

  • 第五步:配置NVIC——为中断选择的优先级

        

外部中断STM32单片机中的一种事件触发机制,它可以让外部设备向单片机发送一个中断信号,从而使单片机在正常执行的过程中立即转移到中断服务程序中执行相应的代码。中断可以用于实现实时性要求较高的功能,例如按键检测、传感器数据采集等。 在STM32单片机中配置外部中断需要经过以下几个步骤: 1. 设置中断系统的优先级分组。这是一个系统级的设置,可以通过寄存器配置来实现。该设置决定了不同中断源之间的优先级关系。 2. 配置外部中断引脚。首先需要将对应的GPIO口配置为输入模式,然后将外部中断引脚与GPIO口连接起来。具体的配置过程包括设置引脚模式、引脚速度、上下拉电阻等。 3. 配置外部中断触发方式。根据具体的需求,可以选择边沿触发或电平触发。边沿触发可以进一步分为上升沿触发、下降沿触发和双边沿触发。 4. 编写中断服务程序。中断服务程序是在中断发生时执行的代码段,用于处理中断事件。在中断服务程序中可以编写相应的逻辑,例如读取按键状态、处理传感器数据等。 5. 配置中断优先级和使能中断。通过中断控制器的设置,可以决定中断的优先级和是否允许中断。优先级高的中断会在多个中断同时发生时优先得到处理。 6. 清除中断挂起位。在中断服务程序中,需要手动清除中断挂起位,表示该中断已经被处理。 总的来说,配置外部中断需要进行引脚配置、触发方式设置、中断服务程序编写和中断优先级设置等步骤。这样,当外部中断事件发生时,单片机会立即转移到中断服务程序中执行相应的代码,从而实现相应的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [STM32单片机--外部中断详解](https://blog.csdn.net/WYFDMW/article/details/107847097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【STM32】HAL库-睡眠模式-外部中断唤醒demo](https://download.csdn.net/download/qq_45607873/85319880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值