STM32共用中断线的外部中断引脚的判断

因为STM32的中断线有多个外部中断引脚共用的,比如中断线1,由PA1,PB1,PC1,PD1,PE1,PF1来共用,假设这些引脚都设置成了中断源且都为下降沿触发,其中任一个产生中断都会进入到中断线1的中断服务程序,那么在中断服务程序中如何来判断是哪个引脚的中断源产生了中断呢?我现在查到的方法只是去判断各个管脚的电平高低,我觉得这样是非常不可靠的,现求教更可靠的方法,请用库函数的方法写出程序并加注释。务必详细.

同时配置了多个管脚(比如,PE1,PA1,PB1)的中断到同一中断线(比如EXTI_LINE1),只有最后的一个配置生效(PB1有 效,PE1,PA1进不了中断)
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
不对吧?根据AFIO->EXTICR1寄存器的定义来看,一次只能从PA1,PB1,PC1,PD1,PE1,PF1、PG1中选一个作为中断源。本回答被提问者和网友采纳
第2个回答  2012-07-21
如果需要在两个不同的引脚上引入不同的两个外部中断,这两个中断的处理函数两个中断的处理函数不一定分别在两个子函数中写。如果两个中断没共用一个追问

请看清我的条件:中断线1,由PA1,PB1,PC1,PD1,PE1,PF1来共用,假设这些引脚都设置成了中断源且都为下降沿触发,其中任一个产生中断都会进入到中断线1的中断服务程序,那么在中断服务程序中如何来判断是哪个引脚的中断源产生了中断呢?

不共用中断源的话,入口地址就已经区分来开了,也不会有这个问题。

第3个回答  2018-06-23
可以在中断服务函数中获取PA1,PB1,PC1,PD1,PE1,PF1、PG1的IO状态来具体判断是哪个引脚触发的外部中断

STM32共用中断线的外部中断引脚的判断
同时配置了多个管脚(比如,PE1,PA1,PB1)的中断到同一中断线(比如EXTI_LINE1),只有最后的一个配置生效(PB1有 效,PE1,PA1进不了中断)

如何区分触发STM32 外部中断的GPIO引脚
判断外部中断来源是不是来源于端口0(至于是PA0还是PB0可通过查询中断来源进行判断,但不建议这么用,所以设置外部中断的端口建议不要重复,比如使用了PA0,就不要使用PB0之类的)另外要注意:端口0-4有自己独立的外部中断函数入口,5-9和10-15两组分别共用两个外部中断函数入口 ...

stm32 哪些外部中断管脚能用,为什么有些端口不能进入外部中断?
中断管脚需要是正常的IO口,除去特殊或专门用途的管脚外,其他可以作为外部中断用。查看中断源你会发现,只有GPIOx的第0-4管脚有各自的中断名称,第5-9管脚共用一个中断名称,第10-15管脚共用一个中断名称。这在STM32的技术手册中会有详细说明,可以去看看。

stm32设置IO中断的时候,如果几个IO共用一个中断,进入中断,如何确定是哪 ...
中断线不同,中断标志位不同。根据中断标志位判断哪个IO触发的。

STM32外部中断查询: 15-10线的外部中断共用一个中断函数,怎么在该函数...
使用 EXTI_GetITStatus()来查询哪根线产生了中断。比如EXTI_GetITStatus(EXTI_Line13)就是查询13线是否产生了中断的。

stm32中这两种对比怎么看出来是不是产生中断的
首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制...

stm32中空闲io口应用外部中断的问题
回答:你看一下.s启动文件里面的中断入口名和_it.c中断服务程序里面的中断入口名是否一致。STM32固件库的几个不同版本入口名有变化。

用STM32做矩阵键盘、自己理解的外部中断方式的几个问题。
EXTI是边沿触发的。当你按下键时,肯定会出现抖动,那抖动一次就是一个边沿,自然会一次次的触发中断了。我以前也试验过,很不好使。用systick扫描是一个办法,我用这个实现了线反转法扫描4X4的键盘矩阵。设置10ms中断一次,每次进中断首先检查有没有按键,如果没有就pass,如果有就先计个数再退出,...

STM32外部中断配置方法讲解
在51单片机中,有两个外部中断源INT0和INT1,分别与P3.2引脚相连。单片机中断方式是被动监视,而非查询方式的主动监视。例如,学校为防止学生半夜上网,安排保安在墙洞口设置一条拉绳,一旦有人试图出去,绳子就会拉动惊醒保安,这种方式就是中断方式的应用,大大节省了人力。STM32单片机的每一个GPIO都可...

stm32中外部中断进入中断以后,把中断线挂起位清0以后,在检测还有意义吗...
清空的是中断标志,和引脚状态无关。因为外部中断9~5任意一个引脚的中断请求都会进入这个中断函数。为了能够区分具体是哪个引脚引起的中断需要查询中断标志位,清除标志位,然后进行中断服务(示例代码是读取引脚状态然后取反来,实现LED闪烁)。

相似回答