打印

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

[复制链接]
13663|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问各位大神,在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同时设置为中断源的。如果非要设置,后面设置的会把前面的覆盖掉的。
*/**
  * ·[url=home.php?mod=space&uid=247401]@brief[/url] Selects the GPIO pin used as EXTI Line.
  * @param  GPIO_PortSource: selects the GPIO port to be used as source for EXTI lines.
  *   This parameter can be GPIO_PortSourceGPIOx where x can be (A..G).
  * @param  GPIO_PinSource: specifies the EXTI line to be configured.
  *   This parameter can be GPIO_PinSourcex where x can be (0..15).
  * @retval None
  */
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
{
  uint32_t tmp = 0x00;
  /* Check the parameters */
  assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
  
  tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03));
  AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
  AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)));
}

使用特权

评论回复
地板
logokfu| | 2013-6-4 11:31 | 只看该作者
本帖最后由 **kfu 于 2013-6-4 11:33 编辑

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



使用特权

评论回复
5
pentral0311| | 2013-6-4 13:03 | 只看该作者
读状态应该不行吧,同时发生时,进入MCU中断的线路有一条,应该会造成**fu说的覆盖现象

使用特权

评论回复
6
yyl830113|  楼主 | 2013-6-4 14:59 | 只看该作者
谢谢各位大神指点,不过有个开发板硬件就是这么设置的,不知道是怎么实现的

使用特权

评论回复
7
logokfu| | 2013-6-4 15:41 | 只看该作者
yyl830113 发表于 2013-6-4 14:59
谢谢各位大神指点,不过有个开发板硬件就是这么设置的,不知道是怎么实现的 ...

程序拿出来看下嘛

使用特权

评论回复
8
figo20042005| | 2013-6-4 15:50 | 只看该作者
理论上好像不行,如果要这样用,那就在中断里用管脚状态判断了

使用特权

评论回复
9
dzguang| | 2013-6-4 19:49 | 只看该作者
使用外部中断的方法,肯定是不行的,1号脚的中断是由一寄存器选择某一触发引脚的,同一时刻只能存在PA1或PD1,不能两个或多个同时存在。实在需要,只能设一个定时中断,进去检查引脚的状态。

使用特权

评论回复
10
yyl830113|  楼主 | 2013-6-5 11:16 | 只看该作者
谢谢各位大神,把硬件改了,分开设计了。

使用特权

评论回复
11
Liang118038| | 2017-6-22 19:50 | 只看该作者
figo20042005 发表于 2013-6-4 15:50
理论上好像不行,如果要这样用,那就在中断里用管脚状态判断了

没设定为中断线应该直接就不会响应中断了吧,那中断里根本也没办法靠检测电平来判定呀!

使用特权

评论回复
12
zhuomuniao110| | 2017-6-23 10:36 | 只看该作者
老帖啊,漂浮了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

87

主题

187

帖子

6

粉丝