ARM32开发——(十)外部中断EXTI

1. 外部中断概念

外部中断,英文缩写为EXTI,全称为Ext ernal Interrupt的缩写,直译过来就是是外部的中断。它是指在嵌入式系统中负责检测和处理外部中断和事件的模块。它通过检测外部信号的电平变化或边沿触发,生成对应的中断或事件,并将其送到中断控制器或事件屏蔽控制器进行处理。

在许多嵌入式系统中,包括STM32和GD32等,EXTI模块通常由多个输入线、边沿检测电路、触发选择寄存器、软件中断事件寄存器、请求挂起寄存器、中断屏蔽寄存器、事件屏蔽寄存器等部分组成,可以实现对外部中断和事件的高效检测和处理。

EXTI(中断/事件控制器)包括 23 个相互独立的边沿检测电路并且能够向处理器内核产生中断 请求或唤醒事件。

2. 中断触发机制

外部中断触发机制,分为两种:

  • 硬件触发
  • 软件触发

硬件触发机制主要是针对外部触发了芯片的引脚,造成引脚的电平发生变化,从而导致中断产生。

硬件触发机制支持三种触发类型:上升沿触发、下降沿触发和任意沿触发。

  • 上升沿:之前是低电平,突然变成高电平了,这个数瞬间,我们称之为触发了上升沿
  • 上升沿:之前是高电平,突然变成低电平了,这个数瞬间,我们称之为触发了下降沿

硬件触发外部中断,简单的理解就是,如果我配置了某个引脚外部中断功能,那么当这个引脚的电平发生变化时,就会触发中断机制,代码层级就会调用到我的中断函数。

软件触发机制,主要针对的是业务逻辑中,需要手动的触发中断事件,去执行中断逻辑而去设计的。他不需要对引脚做任何处理,也可以触发。

3. 中断触发源

引脚的外部中断总共有15个,对于同一个PIN,例如PA0和PB0是不可以同时触发的。

4. 中断消抖处理

4.1 消抖方式

4.1.1 硬件消抖
4.1.2 软件消抖

在按键操作过程中,如果我们采用的是扫描方式实现,消抖的处理方式通常为:

  • 降低扫描频率。通常我们delay个20ms,也就是1秒扫50次,人的手速是到不了的,比较符合逻辑。
  • 状态比较。比较本次和上次的状态,从而确定是否触发,降低触发误操作。

理论上我们可以将这种行为使用到中断处理方式中,但是,我们需要明确一点,中断中不可以睡眠时间过长。会影响其他任务执行。

我们可以通过以下两种方式间隔进行判断:

  • 在定时器的中断函数里,按照指定间隔时间进行判断,这种需要占用一个Timer的中断函数。
  • 通过时间差决定是否进行按键判定,即本次外部中断发生和上次中断发生的时间差。时间差就需要有时间计数概念,那么我们如何获得时间计数,可以利用System Tick。

5. 系统计数模块

通常我们称之为System Tick,System Tick 不是基于标准定时器(Timer)实现的,而是使用了专门的 SysTick 定时器模块。SysTick 定时器是一个专用的计数器,用于实现系统的计时和调度。

SysTick 定时器是一个 24 位的递减计数器,其工作与标准定时器(Timer)不同。它的时钟源通常是系统时钟(CPU 时钟),并且它是硬件级别的计时器,专门用于实现系统级别的计时和调度功能,比如操作系统的任务调度、延时等。

相关推荐
salipopl18 小时前
基于STM32平台的多旋翼无人机系统设计与实现
stm32·嵌入式硬件·无人机
WangLanguager21 小时前
Unix架构详细介绍
arm开发·架构·unix
難釋懷1 天前
Redis网络模型-用户空间和内核态空间
网络·arm开发·redis
振南的单片机世界1 天前
从数码管到点阵屏:动态扫描加595,3个IO驱动256个LED
stm32·单片机·嵌入式硬件
listhi5201 天前
STC8 16通道模拟采集 + 4路串口 + 8路PWM 程序
stm32·单片机·嵌入式硬件
Deitymoon1 天前
STM32——OLED显示字符串
单片机·嵌入式硬件
Graceful_scenery1 天前
龙芯2k0300 - 走马观碑组按键驱动移植
单片机·嵌入式硬件
d111111111d1 天前
MQTT+STM32+ESP8266网络程序分层+韦老师
笔记·stm32·单片机·嵌入式硬件·学习·php
长安第一美人1 天前
RT-Thread 工业屏驱动开发实战:UART 串口屏协议解析 + 数据实时刷新 + 设备驱动框架完整实现
驱动开发·嵌入式硬件·rt-thread·工业控制·uart通信·串口屏驱动
LDR0061 天前
突破快充壁垒,赋能全场景体验——LDR6600 2C1A快充协议芯片重磅来袭
嵌入式硬件