中断5-9里面有多个中断怎么判断呢

2019-10-14 22:28发布

void EXTI9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line6)!=RESET)                //判断中断6是否发生
        {①}
        if(EXTI_GetITStatus(EXTI_Line8)!=RESET)                //判断中断8是否发生
        {②}
}
这样子能分辨中断5-9里面具体是6还是8中断吗,中断6触发会运行②吗,实验现象好像相互影响了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
我是路人甲
1楼-- · 2019-10-15 22:19
lvkanger 发表于 2017-2-27 17:05
所以有可能是中断标志在置位啊,你清除一下标志,看看还会不会进。

我这里是手打的代码,所以省略了清除中断标志,实际上是写了的
我是路人甲
2楼-- · 2019-10-16 00:32
 精彩回答 2  元偷偷看……
我是路人甲
3楼-- · 2019-10-16 06:07
正点原子 发表于 2017-2-27 22:09
这样应该是可以的。你在初始化中断的时候,清除所有的标记,再使能试试

再请问下,需要清除哪些标记呢
沧海
4楼-- · 2019-10-16 12:05
这个是不会影响的,但你得清除掉相应的标志位。
我是路人甲
5楼-- · 2019-10-16 13:29
本帖最后由 我是路人甲 于 2017-2-28 11:51 编辑
沧海 发表于 2017-2-28 11:38
这个是不会影响的,但你得清除掉相应的标志位。


void EXTI9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line6)!=RESET)                //判断中断6是否发生
        {①        EXTI_ClearITPendingBit(EXTI_Line6);            //清除中断标志位
        }
        if(EXTI_GetITStatus(EXTI_Line8)!=RESET)                //判断中断8是否发生
        {②
          EXTI_ClearITPendingBit(EXTI_Line8);            //清除中断标志位
        }
}
实际是这样的,去测试就是相互影响了,如果屏蔽1个中断就正常
沧海
6楼-- · 2019-10-16 14:46
我是路人甲 发表于 2017-2-28 11:49
void EXTI9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line6)!=RESET)                ...

不是吧。你把程序发来看看

一周热门 更多>