#include"S3C244x.h"#include"UART.h"#include"Global.h"#include"MMU.h"/******************************************************
*文件名称:PORTInit
*输 入:无
*输 出:无
*功能说明:I/O初始化
*******************************************************/voidPORTInit(void)
{
rGPACON=0x7fffff;
rGPDCON=0xaaaaaaaa;
rGPDUP=0xffff;//The pull up function is disabled GPD[15:0]rGPECON=0xaaaaaaaa;
rGPEUP=0xffff;
rGPFUP=0xff;
rGPGCON=0xFD000000;
rGPGUP=0xffff;
rGPHCON=0x02faaa;
rGPHUP=0x7ff;
rEXTINT0=0x22222222;//EINT[7:0]rEXTINT1=0x22222222;//EINT[15:8]rEXTINT2=0x22222222;//EINT[23:16]}/******************************************************
*文件名称:KEYISR
*输 入:无
*输 出:无
*功能说明:按键中断服务程序
*******************************************************/void__irq KEYISR(void)
{
UINT32 r;
EnterCritical(&r);
DelayNus(500000);if(rINTPND==BIT_EINT8_23)
{
ClearPending(BIT_EINT8_23);if(rEINTPEND&(1<<8))
{
DEBUGMSG("eint8\n");
rEINTPEND|=1<<8;
}if(rEINTPEND&(1<<11))
{
DEBUGMSG("eint11\n");
rEINTPEND|=1<<11;
}if(rEINTPEND&(1<<13))
{
DEBUGMSG("eint13\n");
rEINTPEND|=1<<13;
}if(rEINTPEND&(1<<14))
{
DEBUGMSG("eint14\n");
rEINTPEND|=1<<14;
}if(rEINTPEND&(1<<15)) {
DEBUGMSG("eint15\n");
rEINTPEND|=1<<15;
}if(rEINTPEND&(1<<19)) {
DEBUGMSG("eint19\n");
rEINTPEND|=1<<19;
}
}
ExitCritical(&r);
}/******************************************************
*文件名称:KEYScanTest
*输 入:无
*输 出:无
*功能说明:按键扫描测试
*******************************************************/voidKEYScanTest(void)
{
rGPGCON=rGPGCON&(~((3<<22)|(3<<6)|(3<<0)|(3<<10)|(3<<12)|(3<<14)))|((2<<22)|(2<<6)|(2<<0)|(2<<10)|(2<<12)|(2<<14)) ;//GPG11,3 set EINTrEXTINT1&=~(7|(7<<0));
rEXTINT1|=(0|(0<<0));//set eint8 falling edge intrEXTINT1&=~(7<<12);
rEXTINT1|=(0<<12);//set eint11 falling edge intrEXTINT1&=~(7<<20);
rEXTINT1|=(0<<20);//set eint13 falling edge intrEXTINT1&=~(7<<24);
rEXTINT1|=(0<<24);//set eint14 falling edge intrEXTINT1&=~(7<<28);
rEXTINT1|=(0<<28);//set eint15 falling edge intrEXTINT2&=~(0xf<<12);
rEXTINT2|=(0<<12);//set eint19 falling edge intrEINTPEND|=(1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19);//clear eint 11,19rEINTMASK&=~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));//enable eint11,19ClearPending(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
pISR_EINT0=pISR_EINT2=pISR_EINT8_23=(U32)KEYISR;
EnableIrq(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
}/******************************************************
*文件名称:Main
*输 入:无
*输 出:无
*功能说明:函数主体
*******************************************************/intMain(void)
{
MMUInit();//IRQDisable();IRQEnable();/*大家可以尝试通过使能MMU观察中断是否能够正常响应*/MMUEnableICache();
MMUEnableDCache();
PORTInit();//IO口一定要初始化,否则串口不能正常工作rINTMOD=0x0;//所有为IRQ模式rINTMSK=BIT_ALLMSK;//屏蔽所有中断UARTInit(S3C2440PCLK,115200);
DEBUGMSG("\r\n\r\nKey Interrupt Test\r\n");
KEYScanTest();while(1);return0;
}