你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
郁工 提问时间:2016-10-12 15:30 /
外部中断EXIT0与GPIO连接图见附件。PA0中断、PB0中断都会进入EXTI0_IRQHandler函数,在该中断函数里能区分是哪个引脚触发中断吗?

外部中断与GPIO连接图

外部中断与GPIO连接图
收藏 1 评论11 发布时间:2016-10-12 15:30

举报

11个回答
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口线的数据,保存,置中断标志位。在主程序中检测中断标志位的状态进行处理。此方法有可能遗漏快速中断
郁工 回答时间: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
  {

   }
}
fantasylankao 回答时间:2019-8-14 17:38:19
又被挖出来了。
到底该听谁的?
andey 回答时间:2019-8-14 17:49:53
提示: 作者被禁止或删除 内容自动屏蔽
SaFang 回答时间:2020-3-24 08:08:47
6楼、8楼正解。
如果理解了stm32的中断机制,就发觉其实很简单。举个例子,完善一下。

void EXTI9_5_IRQHandler(void)            //  假如我们使用  PC6上升沿触发、PA9下降沿触发
{   
    if((GPIOC->IDR & (1<<6) != 0)
    {
        EXTI->PR |= (1<<6);   // 清理中断
        // 调用相应处理
    }

    if(GPIOA->IDR & (1<<9) ==0))
    {
        EXTI->PR |= (1<<9);  // 清理中断
        // 调用相应处理
    }
}
   



}
LZSZYY 回答时间:2021-11-2 09:43:36

wishriver 发表于 2018-2-28 19:54
挖坟,翻帖子看到这篇求助,楼上几位真的很搞笑。
在中断函数里直接判断是哪一个引脚电平拉低就可以了
堂堂 ...

大哥,你确定你是对的吗?打比方PA0和PB0都配置外部中断,因为PB0最后配置,那PB0引脚才能出发外部中断。如果你这样搞,刚好现在是PA0来信号,你以为他能进你的外部中断?你这种只能PB0来外部中断的时候才能判断PA0。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版