yukang1744 发表于 2016-10-12 15:30:45

如何区分触发STM32 外部中断的GPIO引脚?

外部中断EXIT0与GPIO连接图见附件。PA0中断、PB0中断都会进入EXTI0_IRQHandler函数,在该中断函数里能区分是哪个引脚触发中断吗?

zhangdaijin 发表于 2016-10-12 16:06:45

:):):):):):):)

mark0668 发表于 2016-10-12 16:14:30

这图这么多个引脚是只能设置一个脚为外部中断,中断线为0也就对应PX0 的脚,不能设置多个比如PA0,PB0不能这样设置,可以PA0,PB1,PC2,PA3

高二毛 发表于 2016-10-12 16:17:27

楼上正解。。

xmshao 发表于 2016-10-12 17:18:42

软件上没法直接区分。

个别情况下,使用不同脚触发方式或触发时间点结合电平检测应有有机会。

当然,如果不是特别需要,没必要这样做。每个GPIO都可以触发EXTI,一般来讲,错开使用很方便。

lvyunzeng 发表于 2016-10-13 08:34:54

在设计是尽量避免都是PX0或者同一个中断源。实在是硬件电路设计在一起了。那就使用电平检测的办法。进入中断后读取IO口线的数据,保存,置中断标志位。在主程序中检测中断标志位的状态进行处理。此方法有可能遗漏快速中断

yukang1744 发表于 2016-10-13 08:52:54

接收大家建议:设计中断时,GPIO引脚错开使用。

wishriver 发表于 2018-2-28 19:54:33

挖坟,翻帖子看到这篇求助,楼上几位真的很搞笑。
在中断函数里直接判断是哪一个引脚电平拉低就可以了
堂堂ST出品的芯片怎么可能弱智到一个端口的引脚无法同时中断呢。
唉,最可怕的就是以讹传讹
正解是
比如Pd端口中断了,具体来看一下是哪PD3否就这样写
INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)
{
/* In order to detect unexpected events during development,
   it is recommended to set a breakpoint on the following instruction.
*/

   if(GPIO_ReadInputPin(GPIOD , GPIO_PIN_3) == RESET)   //判断是否是PD3
{

   }
}

fantasyhpu 发表于 2019-8-14 17:38:19

又被挖出来了。
到底该听谁的?:L

andeyqi 发表于 2019-8-14 17:49:53

读取下相应的引脚状态
页: [1] 2
查看完整版本: 如何区分触发STM32 外部中断的GPIO引脚?