天嵌 ARM开发社区

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

Dummy_isr error 谁遇见过???

[复制链接]
莲花居士 发表于 2009-9-3 11:16:31 | 显示全部楼层 |阅读模式
使用TQ2440做ADS的实验,按键中断服务怎么进不去啊?超级终端报错:Dummy_isr error, interrupt number: 0, INTMSK = 0xfffffffe,
谁见过这个错误??
以下是我的小程序,编译没错

////************中断法检测按键,并点亮相应的LED********************/
/*********KEY1:GPF1/EINT1 ,  KEY2:GPF4/EINT4   ,   KEY3:GPF2/EINT2   ,  KEY4:GPF0/EINT0********/
#include "2440addr.h"
unsigned long i;

static void __irq KEY4(void)
{
        rGPBDAT = rGPBDAT & 0x6ff; //点亮LED4
        for(i=0;i<6553600;i++);
        rGPBDAT = rGPBDAT | 0x1e0;//全灭
        rSRCPND |= rSRCPND;
        rINTPND |= rINTPND;
}


void Main()
{
       
        rGPBCON = (rGPBCON & 0x3c03ff)|0x15400;//仅将GPB5~8设为输出口,对应led1~4
        rGPBDAT = rGPBDAT | 0x1e0;//全灭
       
        /**************************************************/
        rINTMSK = 0xFFFFFFFF; //屏蔽所有中断
        rGPFCON = (rGPFCON & 0)|(1<<1)|(1<<3)|(1<<5)|(1<<9);
        //F口的0、1、2、4脚为外部中断输入
        rEXTINT0 = (rEXTINT0 & 0)|(1<<13)|(1<<7)|(1<<4)|(1<<1);
        //EINT0/1/2/4为下降沿触发
       
        rINTMOD = 0;//均为IRQ中断,此为默认值,不设亦可
        pISR_EINT0=(unsigned int)KEY4;
        rINTMSK &= 0xfffffffe;                        //仅开EINT0/1/2/4~7
        //rEINTMASK = (rEINTMASK | 0xfffffff) & (0<<4);//仅开EINT4
        //rEINTPEND = 0xfffffff; //清EINT4~23
        //rSRCPND |= rSRCPND;
        //rINTPND |= rINTPND;
        //rPRIORITY = 0;
        /************************************************/
        //EINT_INIT();
       
        while(1);
}
fengliu256 发表于 2009-9-6 21:49:47 | 显示全部楼层
我这几天也遇到了一样的问题,后来在google了很久,网上的答案说是MMU的问题,特别是在编写有中断的程序时候,如果加载到SDRAM中,并且此时中断产生,程序回跳转到0x0地址处的中断向量表查找响应中断地址,有可能MMU未初始化,所以中断向量表并不在0x0,解决方法是初始化MMU就行了。
geekomg 发表于 2010-9-26 16:19:57 | 显示全部楼层
1# 莲花居士

请问一下啊 你这个问题最好是怎么解决的呀 能不能具体点儿啊~感激~
geekomg 发表于 2010-9-26 17:15:49 | 显示全部楼层
1# 莲花居士

按照二楼的说法已经成功了~只不过还不太清楚原理~嘿嘿
yangjing29 发表于 2012-4-26 18:14:50 | 显示全部楼层
在 void main() 函数里加 MMU_Init();就饿可以了。
打开mmu是为了把0x3000_0000地址处的值映射到0x0的地方,
        因为你的中断向量表是保存在0x0开始的地方,当中断发生时的第一时间
        CPU会去0x0地方查中断向量表看是发生了什么中断,是reset还是IRQ还是FIQ还是取数据终止或取指令终止
        按键外部中断是IRQ中断,然后CPU会去IRQ开始的地方找到你的中断服务函数,这个时候轮到了你的中断服务函数运行的时间了
        所以你不打开MMU就不会进入中断服务函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-14 23:35 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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