天嵌 ARM开发社区

 找回密码
 注册
查看: 3658|回复: 0

MDK编写中断程序编译通过了,但烧到板子上去运行不了

[复制链接]
E_boy 发表于 2013-4-19 16:56:31 | 显示全部楼层 |阅读模式
使用MDK编写中断程序时编译通过了,但烧到板子上时一点反应都没有,忘高手指点一二,代码如下:
#include <s3c2440.h>

#define _ISR_STARTADDRESS                        0x33ffff00
#define pISR_EINT0                (*(unsigned *)(_ISR_STARTADDRESS+0x20))
#define pISR_EINT1                (*(unsigned *)(_ISR_STARTADDRESS+0x24))
#define pISR_EINT2                (*(unsigned *)(_ISR_STARTADDRESS+0x28))
#define pISR_EINT3                (*(unsigned *)(_ISR_STARTADDRESS+0x2c))
#define pISR_EINT4_7        (*(unsigned *)(_ISR_STARTADDRESS+0x30))

#define  LED1_ON        (GPBDAT &=~(1<<5))
#define  LED1_OFF        (GPBDAT |=(1<<5))
#define  LED2_ON        (GPBDAT &=~(1<<6))
#define  LED2_OFF        (GPBDAT |=(1<<6))
#define  LED3_ON        (GPBDAT &=~(1<<7))
#define  LED3_OFF        (GPBDAT |=(1<<7))
#define  LED4_ON        (GPBDAT &=~(1<<8))
#define  LED4_OFF        (GPBDAT |=(1<<8))

void Delay()
{
        int i, j;
        for (i = 0; i < 1000; i++)
        {
                for (j = 0; j < 1000; j++);
        }
}

void __irq IRQ_KEY1(void)
{
        LED1_ON;
        Delay();
        LED1_OFF;
       
        SRCPND |= 1<<1;
        INTPND |= 1<<1;
}

void __irq IRQ_KEY2(void)
{
        LED2_ON;
        Delay();
        LED2_OFF;
       
        SRCPND |= 1<<0;
        INTPND |= 1<<0;
}

void __irq IRQ_KEY3(void)
{
        LED3_ON;
        Delay();
        LED3_OFF;
       
        SRCPND |= 1<<2;
        INTPND |= 1<<2;
}

void __irq IRQ_KEY4(void)
{
        LED4_ON;
        Delay();
        LED4_OFF;
       
        SRCPND |= 1<<4;
        INTPND |= 1<<4;
        EINTPEND |= 1<<4;
}

void Eint_Init()
{
        GPFCON &= ~(3<<0 | 3<<2 | 3<<4 | 3<<8);
        GPFCON |= 2<<0 | 2<<2 | 2<<4 | 2<<8;
        GPFDAT |= 1<<0 | 1<<1 | 1<<2 | 1<<4;
       
        EXTINT0 = 0x0;
       
        SRCPND = 0x17;
        INTPND = 0x17;
        EINTPEND = 1<<4;
       
        INTMOD = 0x0;
       
        INTMSK &= ~(1<<0 | 1<<1 | 1<<2 | 1<<4);
        EINTMASK &= ~(1<<4);
       
        pISR_EINT0 = (unsigned)IRQ_KEY1;
        pISR_EINT1 = (unsigned)IRQ_KEY2;
        pISR_EINT2 = (unsigned)IRQ_KEY3;
        pISR_EINT4_7 = (unsigned)IRQ_KEY4;
}

int main()
{
        GPBCON &= ~(3<<10 | 3<<12 | 3<<14 | 3<<16);
        GPBCON |= (1<<10 | 1<<12 | 1<<14 | 1<<16);
        GPBUP  &= ~(1<<5 | 1<<6 | 1<<7 | 1<<8);
        GPBDAT |= 1<<5 | 1<<6 | 1<<7 | 1<<8;
       
        Eint_Init();
        while (1);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-20 14:48 , Processed in 1.078125 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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