左左右学堂 · 课程目录

第42期 EXTI外部中断寄存器详解(下)

观看B站原视频 · 文稿与高清画面

Hello,小伙伴们,大家好,这里是左左右。上期视频我们讲解了EXTI外部中断寄存器的基本功能。这期视频我们就来看看每个寄存器具体是怎么设置的。但在讲寄存器之前。我们要知道中断信号是如何从stm32引脚进入外部中断的。前面我们讲过GPIO口的基本结构图。当IO口被设置为输入模式时,这里有一条线路是这样的,中断信号经斯密特触发器到到复用功能输入。

视频画面 00:28.8
视频画面 00:28.8 · 1080P 原图 · 查看对应视频

信号经过AFIO这个引脚复用选择器后。才到达EXTI外设。那AFIO起到什么作用呢?AFIO相当于一个“信号调度员”。它负责告诉引脚去和哪个片上外设相连。控制信号通路的“开关”。理解了这一点。后面的寄存器配置就顺理成章了。这时的引脚就不再是一个普通的引脚了。当然,这里的普通引脚指的就是只具有通用输入输出功能的引脚。

所以,当我们要将指定引脚配置为EXTI外部中断引脚时。要分三步走。第一步我们要将这个引脚配置为输入模式。这个我们在前面分多期视频讲过。对大家来说肯定是小菜一碟。第二步就要配置AFIO寄存器了。在手册的第28页我们可以看到,AFIO的基地址是0x40010000。

同时,把EXTI的基地址也记一下。待会我们会用到,在手册里,AFIO中与EXTI相关的寄存器叫AFIO_EXTICR1到AFIO_EXTICR4。以AFIO_EXTICR1为例。它的低16位分成4组,每组4位。分别对应EXTI0到EXTI3。假设我们要把PC2作为EXTI2的中断源,只需要在AFIO_EXTICR1中找到EXTI2对应的那4位。

设置为0010。就代表选择GPIOC。这里的x就是和EXTI后面的序号一致。寄存器AFIO_EXTICR1到AFIO_EXTICR4的位含义都是一模一样的。只是对应不同EXTI通道而已。第三步就要配置EXTI相关寄存器了。

视频画面 02:09.9
视频画面 02:09.9 · 1080P 原图 · 查看对应视频

首先,来看中断屏蔽寄存器。这里的位0到位15对应EXTI的16个通道。位16到位19对应这4个中断。置0时,对应通道中断请求被屏蔽。置1时,对应通道中断请求被放开。事件屏蔽寄存器(EXTI_EMR)和中断屏蔽寄存器(EXTI_IMR) 位含义是一模一样的。只不过它针对的是事件屏蔽。

上升沿触发选择寄存器(EXTI_RTSR)。置0时:禁止输入线上的上升沿触发。置1时:允许输入线上的上升沿触发(中断和事件)。下降沿触发选择寄存器(EXTI_FTSR)。置0时:禁止输入线上的下降沿触发。置1时:允许输入线上的下降沿触发(中断和事件)。软件中断事件寄存器(EXTI_SWIER)。

视频画面 03:17.3
视频画面 03:17.3 · 1080P 原图 · 查看对应视频

这个也很简单,当我们把其中某一位置1时。对应通道就会产生一个中断信号。挂起寄存器(EXTI_PR)。当EXTI中断被触发,挂起寄存器(EXTI_PR) 对应位就被硬件自动置1了。在该位中写入’1’可以清除它。

接下来就出几道思考题吧。第一题:如何通过寄存器配置将PC13引脚设置为下降沿触发中断?首先,设置PC13为上拉输入模式。这个以前讲过很多次了,这里就不赘述了。接着,设置AFIO寄存器,将PC13引脚设置为EXTI外部中断引脚。

视频画面 04:58.3
视频画面 04:58.3 · 1080P 原图 · 查看对应视频

最后,就是设置EXTI相关寄存器了。配置下降沿触发选择寄存器对应引脚为1。然后,将中断屏蔽寄存器置1。第二题:如何通过寄存器配置将PA15设置为下降沿事件触发?

首先,设置PA15为上拉输入模式。接着,设置AFIO寄存器,将PA15引脚设置为EXTI外部中断引脚。最后,就是设置EXTI相关寄存器了。配置下降沿触发选择寄存器对应引脚为1。然后,将事件屏蔽寄存器置1。今天的视频就到这里。一定要关注、点赞、收藏,评论。您的支持是我这样的小博主持续更新下去的最大动力。

期待下期视频再见!