天嵌 ARM开发社区

 找回密码
 注册
查看: 3252|回复: 4

为什么外部中断程序只能响应4-7的中断?

[复制链接]
北极熊 发表于 2012-4-3 13:45:24 | 显示全部楼层 |阅读模式
我正在学习按键中断,写了一个按键与led的测试程序,测试时发现一旦进入中断4-7后就只能响应4-7的中断了,而原来正常的0,1,2中断却响应不了,下面是中断4-7的中断函数:
void __irq Eint4_7_Isr(void)
{
   if(rEINTPEND&(1<<4))
   {
      Led2_On();
      Delay1();
      Led2_Off();
      rSRCPND|=1<<4;
      rINTPND|=1<<4;
      rEINTPEND|=1<<4;
   }
}
而改成:
void __irq Eint4_7_Isr(void)
{
   Led2_On();
   Delay1();
   Led2_Off();
   rSRCPND|=1<<4;
   rINTPND|=1<<4;
   if(rEINTPEND&(1<<4))
   {
      rEINTPEND|=1<<4;
   }
}
就可以正常响应了,不知道这个 if位置的改变对程序的影响在哪里。麻烦各位前辈告知一下,先谢谢了。
raominping 发表于 2012-4-7 18:21:27 | 显示全部楼层
你想啊,如果只有一个IF如果第一次不满足,整个中断都结束了不会停在哪里等待的
 楼主| 北极熊 发表于 2012-4-7 22:35:37 | 显示全部楼层
raominping 发表于 2012-4-7 18:21
你想啊,如果只有一个IF如果第一次不满足,整个中断都结束了不会停在哪里等待的

不太明白,能详细一点吗?而且能进4-7中断的话if语句应该是可以满足的啊.
raominping 发表于 2012-4-8 20:15:52 | 显示全部楼层
北极熊 发表于 2012-4-7 22:35
不太明白,能详细一点吗?而且能进4-7中断的话if语句应该是可以满足的啊.

也就是说你吧IF放到死循环里面来判断,中断结束后再退出
 楼主| 北极熊 发表于 2012-4-8 21:37:08 | 显示全部楼层
raominping 发表于 2012-4-8 20:15
也就是说你吧IF放到死循环里面来判断,中断结束后再退出

我再想想,谢谢哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-21 06:15 , Processed in 1.062500 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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