天嵌 ARM开发社区

 找回密码
 注册
查看: 2453|回复: 3

问个IRQ中断嵌套的问题

[复制链接]
Bloath 发表于 2011-12-10 08:53:25 | 显示全部楼层 |阅读模式
本帖最后由 Bloath 于 2011-12-10 08:55 编辑

看datasheet中,EINT0的优先级比EINT4的默认要高
我写了两个中断程序,我用按键进行触发,程序如下
EINT0的执行是先让左边两个LED亮,延时一段时间后,只让最左边的亮
EINT4的程序内容跟EINT0相类似,只是LED显示变成了右边

单独测两个中断都没有问题,进行嵌套实验
当我触发了EINT4时,在中间的延时时我触发了EINT0
因为EINT0优先级比较高,所以执行了EINT0的中断程序
但是EINT0执行完后没有继续执行EIN4的内容

示意图如下
触发EINT4
     灭---灭---亮---亮
触发EINT0
     亮---亮---灭---灭
程序中的延时
     亮---灭---灭---灭
(如果返回的话应该还能执行
     灭---灭---灭---亮)

求大神解释
raominping 发表于 2011-12-10 10:32:47 | 显示全部楼层
你怎么不把程序贴出来呢???那样好分析。你给个结果不好分析的
回复

使用道具 举报

 楼主| Bloath 发表于 2011-12-10 13:13:36 | 显示全部楼层
本帖最后由 Bloath 于 2011-12-10 14:46 编辑

void LED(U16 Data)
{
        rGPBDAT = (rGPBDAT & ~(0xf<<5)) | ((~Data & 0xf)<<5);  
}
void delay(U16 x)
{
        U16 b;
        while(x--)
        {      for(b=0xffff; b>0; b--);    }
}///////////////////////////////
///   EINT0的中断程序
///////////////////////////////
void __irq INT0()
{
        LED(0x03);
        delay(50);
        LED(0x01);
        rSRCPND |= 0x1;
        rINTPND |= 0x1;
}
///////////////////////////////
///   EINT4的中断程序
///////////////////////////////
void __irq INT4()
{
        LED(0x0C);
        delay(50);
        LED(0x08);
        rEINTPEND |= 0x10;
        rSRCPND |= 0x10;
        rINTPND |= 0x10;
}
///////////////////////////////
///   EINT0和4的IRQ初始化
///////////////////////////////
void INTInit()
{
        rGPFCON |= (0x2<<8)|0x2;      //将GPF的两位IO口设成中断模式
        rEXTINT0 |= (0x2<<16)|2;        //将EINT0和EINT4的触发方式为下降沿
        
        rEINTMASK &= ~(1<<4);           //解除EINT0和EINT4的屏蔽位
        rINTMSK &= ~((1<<4)|1);         //同上
        
        pISR_EINT0 = (U32)INT0;             //将中断地址写给二级向量表
        pISR_EINT4_7 = (U32)INT4;         //同上
}

void Main(void)
{
        
        INTInit();
        rGPBCON = 0x155555;
        while(1)
        {
                LED(0x08);
                delay(70);
                LED(0x04);
                delay(70);
                LED(0x02);
                delay(70);
                LED(0x01);
                delay(70);
        }
        
}
回复

使用道具 举报

mydream0110 发表于 2012-1-3 08:49:47 | 显示全部楼层
正在查中断方面的资料,我也是在中断上遇到问题.
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-6-17 11:08 , Processed in 2.042389 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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