OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6478|回复: 7

STM32同组外部中断分时复用问题

[复制链接]

4

主题

16

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-8-12
在线时间
6 小时
发表于 2017-12-11 21:54:21 | 显示全部楼层 |阅读模式
6金钱
本帖最后由 mobius 于 2017-12-11 22:29 编辑

STM32的同一组GPIO外部中断,如EXTI0上是PA0,PB0...如果我想要使用同时使用PA0,PB0作为中断输入口,就是在我不同时间按下PA0,PB0的时候能分别响应,进入不同的中断服务函数,需要怎样实现?
我尝试的方式是配置了GPIOA,GPIOB到EXTI0,然后在中断服务函数中通过判断输入寄存器的数值来判断是哪个按键按下,同时去调用不同的过程,但是我配置了PA,PB,PC,PD,PE,只有最后一个可以起到作用,不知道这里问题出在哪里呢,又是否可以实现这样的功能呢,如果可以,需要怎样实现呢,希望得到指点,谢谢。



最佳答案

查看完整内容[请看2#楼]

楼上正解,这里只能连接到一个外部中断,之所以是最后一个起作用,是因为你配置中断的时候,使用的引脚这个配置信息会把之前的信息覆盖掉。 如果要使用两个中断的话,比较简单的就是改个口,;如果没有办法改,加入要输入PA0 PB0的信号,经过一个与门或者或门(看是高电平触发还是低电平触发),然后再链接到一个管脚(假如说是PB1)。这样配置PB1的外部中断,当中断到来时,在中断服务程序里面检查PA0 PB0的电平情况,进而确定 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-11 21:54:22 | 显示全部楼层
楼上正解,这里只能连接到一个外部中断,之所以是最后一个起作用,是因为你配置中断的时候,使用的引脚这个配置信息会把之前的信息覆盖掉。

如果要使用两个中断的话,比较简单的就是改个口,;如果没有办法改,加入要输入PA0 PB0的信号,经过一个与门或者或门(看是高电平触发还是低电平触发),然后再链接到一个管脚(假如说是PB1)。这样配置PB1的外部中断,当中断到来时,在中断服务程序里面检查PA0 PB0的电平情况,进而确定是谁产生的中断。

十六进制带我飞。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4031
金钱
4031
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-12-12 10:10:55 | 显示全部楼层
只能同时连接一个外部中断,你连接了PA0就不能连接PB0,连接了PB0就不能连接PA0,有个寄存器用来配置连接哪个端口的
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-8-12
在线时间
6 小时
 楼主| 发表于 2017-12-12 13:31:20 | 显示全部楼层
Electronic 发表于 2017-12-12 10:10
只能同时连接一个外部中断,你连接了PA0就不能连接PB0,连接了PB0就不能连接PA0,有个寄存器用来配置连接哪 ...

这样子可以用来检测的中断输入源不就很少了?我在STM8中尝试过在一个中断服务函数中通过检测不同GPIO的输入寄存器的状态来调用不同的实现过程,32中不能实现同样的用法么
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-8-12
在线时间
6 小时
 楼主| 发表于 2017-12-12 13:32:30 | 显示全部楼层
DreamWaterPro 发表于 2017-12-12 12:19
楼上正解,这里只能连接到一个外部中断,之所以是最后一个起作用,是因为你配置中断的时候,使用的引脚这个 ...

我也是这样想最后一个可以起作用的解释应该是因为前面的都被覆盖的了,你的意思是智能通过硬件去实现,并且其实本质上还是连接到了不同的EXIT线上么?这样子可以用来检测的中断输入源不就很少了?我在STM8中尝试过在一个中断服务函数中通过检测不同GPIO的输入寄存器的状态来调用不同的实现过程,32中不能实现同样的用法么
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4031
金钱
4031
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-12-12 17:06:47 | 显示全部楼层
加二极管可以实现,软件上做修改就可以
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-8-12
在线时间
6 小时
 楼主| 发表于 2017-12-12 21:20:28 | 显示全部楼层
Electronic 发表于 2017-12-12 17:06
加二极管可以实现,软件上做修改就可以

请问加二极管实现是什么意思呢?
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-8-12
在线时间
6 小时
 楼主| 发表于 2017-12-18 22:02:48 | 显示全部楼层
一楼所说的覆盖掉是正确的,但是至于为什么是覆盖掉其实是由于配置线时配置GPIOx,x的值是由EXTI的一个寄存器的4位所决定,也就是不同的四位代表了不同的Px,也就导致了配置会被覆盖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 14:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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