MDK编写中断程序编译通过了,但烧到板子上去运行不了
使用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))
#defineLED1_ON (GPBDAT &=~(1<<5))
#defineLED1_OFF (GPBDAT |=(1<<5))
#defineLED2_ON (GPBDAT &=~(1<<6))
#defineLED2_OFF (GPBDAT |=(1<<6))
#defineLED3_ON (GPBDAT &=~(1<<7))
#defineLED3_OFF (GPBDAT |=(1<<7))
#defineLED4_ON (GPBDAT &=~(1<<8))
#defineLED4_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);
}
页:
[1]