单片机
返回首页

STM32F407ZGT6学习之外部中断

2022-08-02 来源:csdn

工程代码:https://pan.baidu.com/s/1Qlfg1_br0tN6yy0fcDwCjg,密码:fhh2


(一)、概述

STM32外部中断通过检测外部的触发事件(上升沿触发、下降沿触发或边沿触发),触发中断事件实现低延迟的中断处理。


 1、外部中断框架图


由下图可以看出,外部中断的边沿检测器连接输入信号,当“软件中断寄存器”和“中断屏蔽寄存器”打开的时候,当有事件触发时,事件会被送到NVIC中断控制器中触发中断事件。

2、外部中断特性


2.1、中断优先级


中断包含 16 个可编程优先级(使用了 4 位中断优先级),数字越小的优先级等级越高。通过NVIC_PriorityGroupConfig这个函数,把16个可编程优先级分配给抢占优先级和响应优先级


抢占优先级:可以打断其他抢占优先级低的中断,先运行完自身的中断。


响应优先级:在上一个中断运行结束后,如果另外两种中断的抢占优先级相同,则响应优先级高的中断被运行。


2.2 NVIC中断


NVIC中断是内核中断,当外部中断事件被送入内核中时,需要设置内核的NVIC的相应参数,才能进入中断服务函数。


可以参考:https://blog.csdn.net/wuyuzun/article/details/72783152


当发生中断时,程序会根据产生的中断类型,进入不同的中断服务函数执行相应的操作,各外设的中断服务函数名在启动文件中可以查找(例如:STM32F407ZGT6的IAR工程启动startup_stm32f40_41xxx.s),下图是部分中断服务函数名。


在写外设的中断功能的时候,只需要把中断功能封装成一个函数,函数名是对应的中断函数名字,当软件要执行外设的中断功能时,就会执行该函数(举例:比如外部中断0的中断函数名是'EXTI0_IRQHandler',我们只需要写一个”void EXTI0_IRQHandler(void)“的函数,当外部中断0发生时,程序会进”EXTI0_IRQHandler“这个函数执行相应的操作)。

2.3、中断的触发事件


    外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器,其中0~15号外部中断连接这每组GPIO的一个引脚,不同组GPIO的同一号引脚连接同一号外部中断(如:GPIOA_Pin2、GPIOB_Pin2都连接在外部中断2)。


3、外部中断寄存器

①EXTI_IMR寄存器使能对应的23个的外部中断


②EXTI_EMR寄存器使能对应的23个事件请求


③EXTI_RTSR触发源的选择,使能之后,当输入源有上升沿信号时,将触发对应的事件


④EXTI_FTSR触发源的选择,使能之后,当输入源有下升沿信号时,将触发对应的事件


⑤SWIER寄存器使能软件中断事件,使能时将会触发对应位置的事件

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 用数字电路CD4069制作的万能遥控轻触开关

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 带有短路保护系统的5V直流稳压电源电路图

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章