OpenEdv-开源电子网

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

外部中断的小问题

[复制链接]

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
发表于 2016-6-12 16:00:33 | 显示全部楼层 |阅读模式
1金钱

void EXTI4_IRQHandler(void)
{
        delay_ms(10);       
        if(KEY0==0)         
        {                                 
                LED0=!LED0;       
                LED1=!LED1;       
        }                 
         EXTI_ClearITPendingBit(EXTI_Line4);
}

将上面程序改成
void EXTI4_IRQHandler(void)
{
        delay_ms(10);       
        if(KEY0==0)         
        {                                 
                LED0=!LED0;       
                LED1=!LED1;
                EXTI_ClearITPendingBit(EXTI_Line4);        
        }                 
         
}会造成按键不灵了,我理解的中断清除标志位不是需要程序进入中断才需要清除么?当按键按下才会进入中断服务程序,而按键按下中断清除位不论放在IF函数里面还是外面都会执行啊,   为什么放里面就出错了?求解?

最佳答案

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

按键有抖动, KEY0==0可能不成立。 放在外面是合理的, 因为清标志是无条件的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11476
金钱
11476
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-6-12 16:00:34 | 显示全部楼层

按键有抖动,
KEY0==0可能不成立。

放在外面是合理的,
因为清标志是无条件的。


回复

使用道具 举报

35

主题

193

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
476
金钱
476
注册时间
2015-12-27
在线时间
116 小时
发表于 2016-6-25 23:51:20 | 显示全部楼层
xuande 发表于 2016-6-12 16:00
按键有抖动,
KEY0==0可能不成立。

但是还有问题啊,delayms(10)已经起到了软件消除干扰的问题了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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