[求助]STM32外部中断共用中断线问题?

[复制链接]
 楼主| yyl830113 发表于 2013-6-4 11:09 | 显示全部楼层 |阅读模式
请问各位大神,在STM32外部中断配置时,把PB1 和PD1都配置成中断模式,中断线EXTI_Line1,那么在EXTI1_IRQHandler   这个中断服务程序里面,如何区别是 哪个引脚产生的中断呢?谢谢!


IJK 发表于 2013-6-4 11:17 | 显示全部楼层
可以读PB1 和PD1的当前状态来判断
logokfu 发表于 2013-6-4 11:25 | 显示全部楼层
本帖最后由 **kfu 于 2013-6-4 11:33 编辑

这个不是判断问题,而是当初你在设置中断引脚的时候都是不能把PB1和PD1同时设置为中断源的。如果非要设置,后面设置的会把前面的覆盖掉的。
  1. */**
  2.   * ·[url=home.php?mod=space&uid=247401]@brief[/url] Selects the GPIO pin used as EXTI Line.
  3.   * @param  GPIO_PortSource: selects the GPIO port to be used as source for EXTI lines.
  4.   *   This parameter can be GPIO_PortSourceGPIOx where x can be (A..G).
  5.   * @param  GPIO_PinSource: specifies the EXTI line to be configured.
  6.   *   This parameter can be GPIO_PinSourcex where x can be (0..15).
  7.   * @retval None
  8.   */
  9. void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
  10. {
  11.   uint32_t tmp = 0x00;
  12.   /* Check the parameters */
  13.   assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
  14.   assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
  15.   
  16.   tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03));
  17.   AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
  18.   AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)));
  19. }
logokfu 发表于 2013-6-4 11:31 | 显示全部楼层
本帖最后由 **kfu 于 2013-6-4 11:33 编辑

PB1和PD1不能同时设置的吧。

1.jpg

pentral0311 发表于 2013-6-4 13:03 | 显示全部楼层
读状态应该不行吧,同时发生时,进入MCU中断的线路有一条,应该会造成**fu说的覆盖现象
 楼主| yyl830113 发表于 2013-6-4 14:59 | 显示全部楼层
谢谢各位大神指点,不过有个开发板硬件就是这么设置的,不知道是怎么实现的
logokfu 发表于 2013-6-4 15:41 | 显示全部楼层
yyl830113 发表于 2013-6-4 14:59
谢谢各位大神指点,不过有个开发板硬件就是这么设置的,不知道是怎么实现的 ...

程序拿出来看下嘛
figo20042005 发表于 2013-6-4 15:50 | 显示全部楼层
理论上好像不行,如果要这样用,那就在中断里用管脚状态判断了
dzguang 发表于 2013-6-4 19:49 | 显示全部楼层
使用外部中断的方法,肯定是不行的,1号脚的中断是由一寄存器选择某一触发引脚的,同一时刻只能存在PA1或PD1,不能两个或多个同时存在。实在需要,只能设一个定时中断,进去检查引脚的状态。
 楼主| yyl830113 发表于 2013-6-5 11:16 | 显示全部楼层
谢谢各位大神,把硬件改了,分开设计了。
Liang118038 发表于 2017-6-22 19:50 来自手机 | 显示全部楼层
figo20042005 发表于 2013-6-4 15:50
理论上好像不行,如果要这样用,那就在中断里用管脚状态判断了

没设定为中断线应该直接就不会响应中断了吧,那中断里根本也没办法靠检测电平来判定呀!
zhuomuniao110 发表于 2017-6-23 10:36 | 显示全部楼层
老帖啊,漂浮了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:==================================================== 店铺:http://shop114807637.taobao.com/ QQ:2050567376

87

主题

187

帖子

6

粉丝
快速回复 返回顶部 返回列表