arm9 中断向量 重定位_ARM9中断调试(1)

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值