大神们,外部中断服务函数,5以上怎么用?

2019-07-21 03:01发布

比如说外部中断2的服务函数,很简单:
void EXTI2_IRQHandler(void) {   delay_ms(10); //消抖        if(KEY2==0)           {  LED0=!LED0;        }                    EXTI_ClearITPendingBit(EXTI_Line2);//清除LINE2上的中断标志位 }

0~4的服务函数都很简单,他们都是独立的,直接往里写就行。但是到了5以上就变成公用函数,我就不太明白怎么用了。

大大们能不能举个例子,比如我想用外部中断5,这时候:
void EXTI9_5_IRQHandler(void)
{    }
这时候里面怎么写?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
lycreturn
1楼-- · 2019-07-21 03:14
里面可以这样写  
 if((EXTI->R & 0x20)==0x20)  //说明中断线5发生了中断    
{
  //中断内容
}
EXTI->R|=1<<5;//清除中断挂起
kittyhoney
2楼-- · 2019-07-21 07:47
大神们,我顺道问一下,首先这个帖子里讲了,F4的引脚和中断线是对应的:http://www.openedv.com/posts/list/43327.htm

也就是说,F4探索者的开发板上,独立按键分别是PA^0、PE^2/3/4,所以他们就只能对应中断0、2、3、4,没法对应其他的,对吧?也没法做中断1,以及中断5~15的实验?

我这么理解没错吧?

当然了,我还是很好奇0~15的服务函数,里面怎么写…………
simplelifeNick
3楼-- · 2019-07-21 09:06
后面的是复用的一个中断函数,所以进去了就自己判断啊
如果5-9 你本来就只打开了中断5你就直接操作不用管了
如果你开了5 6 你就自己去调用函数检查是5 触发还是6触发
lycreturn
4楼-- · 2019-07-21 09:09
直接读取EXTI_PR,判断哪条中断线发生了中断
kittyhoney
5楼-- · 2019-07-21 12:52
 精彩回答 2  元偷偷看……
kittyhoney
6楼-- · 2019-07-21 14:11
回复【4楼】lycreturn:
---------------------------------
这么说太模糊了呀大神~~

比如我现在用的就是PA^5做中断,
void EXTI9_5_IRQHandler(void)
{    }
里面怎么写呢?菜鸟真心求教~~~

一周热门 更多>