如何区分触发STM32 外部中断的GPIO引脚?
外部中断EXIT0与GPIO连接图见附件。PA0中断、PB0中断都会进入EXTI0_IRQHandler函数,在该中断函数里能区分是哪个引脚触发中断吗?:):):):):):):) 这图这么多个引脚是只能设置一个脚为外部中断,中断线为0也就对应PX0 的脚,不能设置多个比如PA0,PB0不能这样设置,可以PA0,PB1,PC2,PA3 楼上正解。。 软件上没法直接区分。
个别情况下,使用不同脚触发方式或触发时间点结合电平检测应有有机会。
当然,如果不是特别需要,没必要这样做。每个GPIO都可以触发EXTI,一般来讲,错开使用很方便。 在设计是尽量避免都是PX0或者同一个中断源。实在是硬件电路设计在一起了。那就使用电平检测的办法。进入中断后读取IO口线的数据,保存,置中断标志位。在主程序中检测中断标志位的状态进行处理。此方法有可能遗漏快速中断 接收大家建议:设计中断时,GPIO引脚错开使用。 挖坟,翻帖子看到这篇求助,楼上几位真的很搞笑。
在中断函数里直接判断是哪一个引脚电平拉低就可以了
堂堂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
{
}
} 又被挖出来了。
到底该听谁的?:L 读取下相应的引脚状态
页:
[1]
2