为什么这个按键中断控制LED灯亮的函数没反应?
这个是国嵌2440arm精讲班离得原程序,可是我下载到开发板上去,却看不到任何现象,这是为什么呢?
#define GLOBAL_CLK 1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
void key_init(void);
static void __irq key_handler(void);
/*************************************************
延时函数
**************************************************/
void delay(int times)
{
int i,j;
for(i=0;i<times;i++)
for(j=0;j<400;j++);
}
/*************************************************
LED初始化
**************************************************/
void Led1_init(void)
{
rGPBCON &= ~(3<<10);
rGPBCON |= (1<<10);
}
/*************************************************
点亮LED
**************************************************/
void Led1_run(void)
{
rGPBDAT &=~(1<<5); /*LED亮还是灭?*/
delay(1000);
rGPBDAT |=(1<<5);
delay(1000);
}
/*************************************************
主函数
**************************************************/
void Main(void)
{
Led1_init();
key_init();
while(1);
}
/*************************************************
按键初始化
**************************************************/
void key_init(void)
{
//rGPGCON &= ~(0x3<<0);
//rGPGCON |= (0x2<<0);
rEXTINT1 &= ~(0xf<<0);
rEINTPEND |= (1<<8);
rEINTMASK &= ~(1<<8);//EINTMASK是专门处理外部中断屏蔽控制的,但低4位保留(涉及EINT0~3)
/*设置ISR*/
pISR_EINT8_23=(U32)key_handler;
EnableIrq(BIT_EINT8_23);
}
/*************************************************
按键中断处理函数
**************************************************/
static void __irq key_handler(void)
{
/*判断是否是按键K1产生的中断*/
if(rINTPND==BIT_EINT8_23)
{
ClearPending(BIT_EINT8_23);
if(rEINTPEND&(1<<8))
rEINTPEND |= 1<< 8;
Led1_run();
}
}