1. EXTI 简介
外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
EXTI 控制器的主要特性如下:
每个中断/事件线上都具有独立的触发和屏蔽
每个中断线都具有专用的状态位
支持多达 23 个软件事件/中断请求
检测脉冲宽度低于 APB2 时钟宽度的外部信号。
2. EXTI 功能框图
3. 功能点
要产生中断,必须先配置好并使能中断线。
要产生事件,必须先配置好并使能事件线。
通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求
硬件中断选择
要配置 23 根线作为中断源,请执行以下步骤:
配置 23 根中断线的屏蔽位 (EXTI_IMR)
配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。
硬件事件选择
要配置 23 根线作为事件源,请执行以下步骤:
配置 23 根事件线的屏蔽位 (EXTI_EMR)
配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
软件中断/事件选择
可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。
配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)
在软件中断寄存器设置相应的请求位 (EXTI_SWIER)
4. 中断与事件比较
从上图可以知道,从外部激励信号来看,中断和事件的产生源都可以是一样的.之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果;但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果,当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等;
简单举例:
外部I/O触发AD转换,来测量外部物品的重量;
如果使用传统的中断通道,需要I/O触发产生外部中断,外部中断服务程序启动AD转换,AD转换完成中断服务程序提交最后结果;使用事件通道,I/O触发产生事件,然后联动触发AD转换,AD转换完成中断服务程序提交最后结果;相比之下,后者不要软件参与AD触发,并且响应速度也更块; 使用事件触发DMA操作,就完全不用软件参与就可以完成某些联动任务了。
5. 编码要点
配置时钟,系统时钟,GPIO时钟,SYSCFG时钟。
配置NVIC
配置GPIO输入模式
配置EXTI源输入及EXTI中断/事件线
EXTI 中断服务函数
注:事件机制提供了一个完全有硬件自动完成的触发到产生结果的通道,不要软件的参与,降低了CPU的负荷,节省了中断资源,提高了响应速度(硬件总快于软件),是利用硬件来提升CPU芯片处理事件能力的一个有效方法;
上一篇:秉火429笔记之十一 Systick--滴答定时器
下一篇:STM32之SPI的迭代
推荐阅读最新更新时间:2024-11-09 11:20