OpenEdv-开源电子网

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

STM32F103RCT6 重复进入外部中断

[复制链接]

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
发表于 2016-3-30 12:17:59 | 显示全部楼层 |阅读模式
1金钱


外部中断引脚配置为下拉输入
采用双沿触发中断
复用时钟AFIO已经开启


现象是
当中断引脚持续为低电平时 重复触发中断
中断标志位不停被置一然后产生中断这种现象本来不应该产生,如果说是因为没有消抖多进了几次中断还能理解  
这种直接没有动作 所有引脚都保持固定电平状态但是还是疯狂进中断
在中断标志位清除之后再读取中断标志位状态  发现大多数时候标志位仍然为1  然后中断执行完之后又重复触发中断

自己感觉问题应该出在中断引脚信号上 或者是标志位清除的不彻底  或者清除的方法不对、
请大神指点一二


下面是部分程序



#define MOTOR_1_HouXian_EXTI          (EXTI_Line6)
#define MOTOR_1_QianXian_EXTI         (EXTI_Line7)
#define STMOTOR_HouXian_EXTI         (EXTI_Line8)
#define STMOTOR_QianXian_EXTI   (EXTI_Line9)
清中断之前先将中断标志位读取出来打印出来然后清标志位
EXTI_ClearITPendingBit(MOTOR_1_HouXian_EXTI);   
EXTI_ClearITPendingBit(MOTOR_1_QianXian_EXTI);     
EXTI_ClearITPendingBit(STMOTOR_HouXian_EXTI);
EXTI_ClearITPendingBit(STMOTOR_QianXian_EXTI);
清完之后再读取打印一次
发现清完之后的标志位还有为一的   导致再次触发中断


下面附上部分串口输出数据  EXTI_IRQ 为进入中断之后打印出来的标志字符串    asdasd为主函数里面执行的循环打印字符串
EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限1
ST前限1

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限1
ST前限1

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限0
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限0
ST前限0

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限0
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限0
ST前限0

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限1
Mi前限0
ST后限1
ST前限1

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限0
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限1
ST前限0

EXTI_IRQ
清完标志位前各标志位状态
M1后限0
Mi前限0
ST后限1
ST前限0
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限0
ST前限0

asdasd                        //////////////////////////////  只输出一次asdasd 说明主函数基本没进去过  一直在中断中

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1

EXTI_IRQ
清完标志位前各标志位状态
M1后限1
Mi前限1
ST后限1
ST前限1
清完标志位后各标志位状态
M1后限0
Mi前限0
ST后限0
ST前限0
asd


请大神分析下  谢谢



最佳答案

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

清除中断标志 EXTI_ClearFlag()和EXTI_ClearITPendingBit()是一样的,没有其它函数了, 你可这样检查下: 1. 单个中断测试,看看是否会一直进入 2. 如果单个中断测试没问题,就是中断之间互相干扰,这个解决起来有点麻烦 3. 如果单个中断测试通不过,就是硬件问题,检查下电路吧
我是菜鸟
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2016-3-30 12:18:00 | 显示全部楼层
本帖最后由 zc123 于 2016-3-30 15:53 编辑

清除中断标志 EXTI_ClearFlag()和EXTI_ClearITPendingBit()是一样的,没有其它函数了,
你可这样检查下:
1. 单个中断测试,看看是否会一直进入
2. 如果单个中断测试没问题,就是中断之间互相干扰,这个解决起来有点麻烦
3. 如果单个中断测试通不过,就是硬件问题,检查下电路吧
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
 楼主| 发表于 2016-3-30 13:26:15 | 显示全部楼层
自己来顶一下
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
 楼主| 发表于 2016-3-30 23:10:49 | 显示全部楼层
zc123 发表于 2016-3-30 15:46
清除中断标志 EXTI_ClearFlag()和EXTI_ClearITPendingBit()是一样的,没有其它函数了,
你可这样检查下:
...

暂时感觉应该是开关电源问题  ASM1117出来的3.3有2KHz  估计全被采进来了
我是菜鸟
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
 楼主| 发表于 2016-7-1 09:15:51 | 显示全部楼层
这帖子要结了  顺便跟大家提样东西  我用的开关电源  开关电源坏了  输出的5V是叠加在220交流电上的 开关电源外壳可以测到220V(这个我被电了一下才发现的)  但是漏电开关不跳闸  单片机也能正常工作没有烧,只是外部中断依然会乱来,,建议大家以后使用开关电源还是买好点的  一是安全   二是省去很多不必要的调试时间   只有一人回复  兄弟 金钱就给你了
我是菜鸟
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-7-5
在线时间
22 小时
发表于 2016-7-5 09:45:17 | 显示全部楼层
你好,看到你的帖子,我也是采用双边沿中断,但是代码一直有问题,这是我之前发的帖子http://www.stmcu.org/module/forum/thread-606667-1-1.html。能不能帮忙指点指点问题出在哪了,万分感谢!
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
 楼主| 发表于 2016-7-6 09:58:05 | 显示全部楼层
flyinggirlxhx 发表于 2016-7-5 09:45
你好,看到你的帖子,我也是采用双边沿中断,但是代码一直有问题,这是我之前发的帖子http://www.stmcu.org ...

暂时没想到哪里问题  找到原因了请回来告知谢谢
我是菜鸟
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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