打印
[ZLG-ARM]

看看这个程序,LPC2214的EINT0中断怎样才能进去啊?

[复制链接]
1884|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcuduoduo|  楼主 | 2008-2-14 15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用周工的ARM Executable Image for lpc2100模板,在ADS1.2中建了一个项目,然后添加如下文件main.c,模板其他文件未做任何改动. 
该程序简单至极,仅仅测试EINT0中断响应并设置一个标志而已.我用示波器看到EINT0输入变低,在easy JTAG调试时也确实看到IRQstatus EINT0标志位起来了,可是程序就是进不了中断,奇怪死了.我后来用GPIO方式查询EINT0是完全没问题的.
下面是完整的main.c文件,请问哪里还需要设置一下呢?

#include "config.h"

unsigned int iIntHappened;


//EINT0 service
void  __irq  IRQ_EINT0(void)
{
    iIntHappened = 1;
    
    VICIntEnClr = 0x00004000;    //关中断,待主程序循环中处理后再开启
    
}

//main program
int main (void)
{// add user source code 
    unsigned int temp;
        
    //interrupt config
    temp = PINSEL1;
    temp &= 0x3bfffffc;
    temp |= 0x00000001;
    PINSEL1 = temp;        //P0.16 作为中断输入
    
    EXTMODE = 0x00000000;    //EINT0 低电平有效
    EXTPOLAR = 0x00000000;
    
    EXTINT = 0x0000000f;    //清除此前可能的中断标志
    
    
    VICIntSelect = 0x00000000;        //all interrupt source as IRQ
    VICVectCntl0 = 0x2e;            //EINT0 as IRQ slot0
    VICVectAddr0 = (int)IRQ_EINT0;    //EINT0 sservice address
    VICIntEnable = 0x00004000;      //enable EINT0
    
    //----------------------------------------------------------------
    
    
    while(1)
    {
        if (iIntHappened)
        {
            iIntHappened = 0;
            
            VICIntEnable = 0x00004000; //再开启中断    
        }
    }

        
    return 0;
}

相关帖子

沙发
hxl2008| | 2008-2-14 15:41 | 只看该作者

需使能IRQ中断

使用2100的模板,需在主程序中调用IRQEnable()使能IRQ中断。

使用特权

评论回复
板凳
zlgarm| | 2008-2-14 16:00 | 只看该作者

mcuduoduo,您好!

您的程序没有开启IRQ中断。请在中断初始化中加入以下代码。

IRQEnable();        /*  使能IRQ中断   */

                                                       By zlgarm_zhangxiaomeng

使用特权

评论回复
地板
zlgarm| | 2008-2-15 08:58 | 只看该作者

中断

mcuduoduo 您好!
    对于您的问题及程序有一下两点需要注意:
    1、中断服务程序结束要清楚中断标志EXTINT = 0X01及结束向量中断     VICVectAddr = 0;
    2、在LPC2100系列模版中是没有IRQEnable()这个函数的,如果需要使能中断,可以把Startup.s中的设置系统模式堆栈 MSR CPSR_c, #0xdf 改为
MSR CPSR_c, #0x5f 这样就可以打开中断。
                                By zlgarm_lijintao

使用特权

评论回复
5
armecos| | 2008-2-15 10:26 | 只看该作者

这样写太乱了

    一大堆寄存器,思路混乱,抽象程度不够,不符合人的思维习惯,换一种CPU又要重来。
    
    下面是一个万能中断模板,适合各种CPU,符合人类思维习惯。

    万能中断写法

使用特权

评论回复
6
mcuduoduo|  楼主 | 2008-2-15 11:45 | 只看该作者

非常感谢

非常感谢楼上几位大牛,新手这就去仔细看看然后再试.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

41

帖子

0

粉丝