📄 eint.c
字号:
/*****************************************
NAME: Eint.c
DESC: External Interrupt test
HISTORY:
2006.12.18:GOM: draft ver 1.0
*****************************************/
#include "system.h"
#include "eint.h"
static void __irq Eint0Int(void)
{
printf("EINT0 interrupt is occurred.\n");
ClearPending(BIT_EINT0);
rEINTPEND=(1<<0);
}
static void __irq Eint8_23(void)
{
if (rEINTPEND & (1<<11))
printf("EINT11 interrupt is occurred.\n");
rEINTPEND |= (1<<11);
ClearPending(BIT_EINT8_23);
}
void Test_Eint(void)
{
int extintMode;
printf("[External Interrupt Test through PF0 PG11]\n");
printf("1.L-LEVEL 2.H-LEVEL 3.F-EDGE 4.R-EDGE 5.B-EDGE\n");
printf("Select the external interrupt type.\n");
extintMode=Uart_getc();
rGPFCON = (rGPFCON & ~0x3)|(2<<0); //GPF0 = EINT0
rGPGCON = (rGPGCON & ~0xc0)|(2<<6); //GPG3 = EINT11
rEXTINT0 = (rdEXTINT0 | (1<<3));
rEXTINT1 = (rdEXTINT0 | (1<<15));
switch(extintMode)
{
case '1':
rEXTINT0 = (rdEXTINT0 & ~(7<<0)) | (0x0<<0) ; //EINT0=low level triggered
rEXTINT1 = (rdEXTINT1 & ~(7<<12)) | (0x0<<12);//EINT11=low level triggered
break;
case '2':
rEXTINT0 = (rdEXTINT0 & ~(7<<0)) | (0x1<<0) ; //EINT0=high level triggered
rEXTINT1 = (rdEXTINT1 & ~(7<<12)) | (0x1<<12); //EINT11=high level triggered
break;
case '3':
rEXTINT0 = (rdEXTINT0 & ~(7<<0)) | (0x2<<0) ; //EINT0=falling edge triggered
rEXTINT1 = (rdEXTINT1 & ~(7<<12)) | (0x2<<12); //EINT11=falling edge triggered
break;
case '4':
rEXTINT0 = (rdEXTINT0 & ~(7<<0)) | (0x4<<0); //EINT0=rising edge triggered
rEXTINT1 = (rdEXTINT1 & ~(7<<12)) | (0x4<<12); //EINT11=rising edge triggered
break;
case '5':
rEXTINT0 = (rdEXTINT0 & ~(7<<0)) | (0x6<<0); //EINT0=both edge triggered
rEXTINT1 = (rdEXTINT1 & ~(7<<12)) | (0x6<<12); //EINT11=both edge triggered
break;
default:
break;
}
printf("Press the EINT0/11 buttons or Press any key to exit.\n");
pISR_EINT0 = (U32)Eint0Int;
pISR_EINT8_23 = (U32)Eint8_23;
rEINTPEND = 0xffffff;
rSRCPND = BIT_EINT0|BIT_EINT8_23; //to clear the previous pending states
rINTPND = BIT_EINT0|BIT_EINT8_23;
rEINTMASK &= ~((1<<11)|(1<<0));
rINTMSK &= ~(BIT_EINT0|BIT_EINT8_23);
Uart_getc();
rEINTMASK=0xffffff;
rINTMSK=BIT_ALLMSK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -