打印
[STM32F1]

关于EXTI_GetITStatus的问题

[复制链接]
3447|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fql19931128|  楼主 | 2016-6-18 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void EXTI0_IRQHandler()
{       
        if(EXTI_GetITStatus(EXTI_Line0)==SET)                //读取中断标志位
        {
                EXTI_ClearITPendingBit(EXTI_Line0);               
                delay_ms(10);                                                                       
                if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==Bit_SET)       
                {
                        LED_Display();
                }
                while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==Bit_SET);
        }       
}
进入了中断为什么还要读取标志位
沙发
popeye021| | 2016-6-19 20:08 | 只看该作者
很多时候一个中断向量对应了好几个中断,所以读一下中断标志位,确认中断

使用特权

评论回复
板凳
popeye021| | 2016-6-19 20:10 | 只看该作者
你这个应该是中断方式读取按键信号的demo程序,正式使用不会在中断处理程序里用硬延时

使用特权

评论回复
地板
fql19931128|  楼主 | 2016-6-20 16:45 | 只看该作者
popeye021 发表于 2016-6-19 20:10
你这个应该是中断方式读取按键信号的demo程序,正式使用不会在中断处理程序里用硬延时 ...

谢谢指教,我是初学者,那在中断里应该怎么延时呢

使用特权

评论回复
5
Rangar| | 2016-6-20 22:03 | 只看该作者
什么叫硬延时

使用特权

评论回复
6
popeye021| | 2016-6-21 08:47 | 只看该作者
fql19931128 发表于 2016-6-20 16:45
谢谢指教,我是初学者,那在中断里应该怎么延时呢

一般采用定时器延时,延时的时候mcu还可以执行其他的程序。你随便搜索一下按键扫描程序就有了。
采用mcu强制等待延时的一般是教学demo,或者系统实时性实在不高的时候采用的。

使用特权

评论回复
7
popeye021| | 2016-6-21 08:48 | 只看该作者

就是mcu强制等待的延时方式,好像是在哪看到的说法,我就沿用了,可能说法不规范吧。

使用特权

评论回复
8
bbapple| | 2016-6-21 14:09 | 只看该作者
读取中断标志位没是怎么问题呀。。。。

使用特权

评论回复
9
fql19931128|  楼主 | 2016-6-27 16:12 | 只看该作者
popeye021 发表于 2016-6-21 08:47
一般采用定时器延时,延时的时候mcu还可以执行其他的程序。你随便搜索一下按键扫描程序就有了。
采用mcu ...

那用systick可以吗

使用特权

评论回复
10
popeye021| | 2016-6-27 16:44 | 只看该作者

可以

使用特权

评论回复
11
dongnanxibei| | 2016-6-28 10:05 | 只看该作者
读取标志位才知道具体是哪个中断,而中断入口是包含多个并列管脚的。

使用特权

评论回复
12
dongnanxibei| | 2016-6-28 10:05 | 只看该作者
不仅要读,而且还有关闭中断,清理标志位,读出来后,执行对应的操作,最后清理,退出钱恢复中断。

使用特权

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

本版积分规则

6

主题

9

帖子

0

粉丝