对按键中断控制蜂鸣器程序进行如下的修改:
#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 beep_init(void); void beep_run(void); /************************************************* Function name: delay Parameter : times Description : 延时函数 Return : void Argument : void Autor & date : Daniel **************************************************/ void delay(int times) { int i,j; for(i=0;i<times;i++) for(j=0;j<400;j++); } /************************************************* Function name: Main Parameter : void Description : 主功能函数 Return : void Argument : void Autor & date : Daniel **************************************************/ void Main(void) { beep_init(); MMU_Init(); key_init(); while(1); } /************************************************* Function name: key_init() Parameter : void Description : 按键K1的初始化函数 Return : void Argument : void Autor & date : Daniel **************************************************/ void key_init(void) { rGPFCON &= ~(0x3<<2); //设置管脚功能,为EINT1中断 rGPFCON |= (0x2<<2); rEXTINT0 &= ~(0xf<<4); //设置外部中断1,EINT1为电平触发方式 //rEINTPEND |= (1<<8); //设置外部中断EINT8寄存器,EINT0-EINT3,在寄存器EINTPEND和EINTMASK中没有体现出来,怎样理解?? // rEINTMASK &= ~(1<<8); /*设置ISR*/ pISR_EINT1=(U32)key_handler;//中断向量表怎样理解pISR_EINT1?? EnableIrq(BIT_EINT1);//BIT_