?? int_test.c
字號:
/*********************************************************************************************
* File: eint.c
* Author: embest
* Descript: External interrupt test
* History:
* EINT0 --- SB1202 EINT11 --- SB1203
* H.T.Zhang, Programming modify, September 14, 2005
*********************************************************************************************/
/*------------------------------------------------------------------------------------------*/
/* include files */
/*------------------------------------------------------------------------------------------*/
#include "2410lib.h"
#include "demo.h"
/*------------------------------------------------------------------------------------------*/
/* function declare */
/*------------------------------------------------------------------------------------------*/
void int0_int(void);// __attribute__ ((interrupt ("IRQ")));
void int11_int(void);// __attribute__ ((interrupt ("IRQ")));
extern void isrEINT0(void);
extern void isrEINT11_19(void);
/*********************************************************************************************
* name: int0_int
* func: EXTINT0 interrupt service routine
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void int0_int(void)
{
uart_printf(" EINT0 interrupt occurred.\n");
lcd_clr_rect(40,108,248,124,WHITE);
lcd_disp_ascii8x16(40,108,RED,"EINT0 interrupt occurred.");
ClearPending(BIT_EINT0);
}
/*********************************************************************************************
* name: int11_int
* func: EXTINT11 interrupt service routine
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void int11_int(void)
{
char buf[20];
if(rEINTPEND==(1<<11))
{
uart_printf(" EINT11 interrupt occurred.\n");
lcd_clr_rect(40,108,248,124,WHITE);
lcd_disp_ascii8x16(40,108,RED,"EINT11 interrupt occurred.");
rEINTPEND=(1<<11);
}
else if(rEINTPEND==(1<<19))
{
uart_printf(" EINT19 interrupt occurred.\n");
lcd_clr_rect(40,108,248,124,WHITE);
lcd_disp_ascii8x16(40,108,RED,"EINT19 interrupt occurred.");
rEINTPEND=(1<<19);
}
else
{
uart_printf(" rEINTPEND=0x%x\n",rEINTPEND);
sprintf(buf,"rEINTPEND=0x%x",rEINTPEND);
lcd_clr_rect(40,108,240,124,WHITE);
lcd_disp_ascii8x16(40,108,RED,(UINT8T *)buf);
rEINTPEND=(1<<19)|(1<<11);
}
ClearPending(BIT_EINT8_23);
}
/*********************************************************************************************
* name: int_init
* func: Interrupt initialize
* para: none
* ret: none
* modify:
* comment:
* EINT0 --- SB202 EINT11 --- SB203
*********************************************************************************************/
void int_init(void)
{
rSRCPND = rSRCPND; // clear all interrupt
rINTPND = rINTPND; // clear all interrupt
// nIntMode='3';
rGPFCON = (rGPFCON & 0xffcc) | (1<<5) | (1<<1); // PF0/2 = EINT0/2
rGPGCON = (rGPGCON & 0xff3fff3f) | (1<<23) | (1<<7); // PG3/11 = EINT11/19
pISR_EINT0=(UINT32T)isrEINT0;//int0_int; //isrEINT0;
pISR_EINT8_23=(UINT32T)isrEINT11_19;//int11_int; //isrEINT11_19;
rEINTPEND = 0xffffff;
rSRCPND = BIT_EINT0 | BIT_EINT8_23; //to clear the previous pending states
rINTPND = BIT_EINT0 | BIT_EINT8_23;
rEXTINT0 = (rEXTINT0 & ~((7<<8) | (0x7<<0))) | 0x2<<8 | 0x2<<0; // EINT0/2=falling edge triggered
rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x2<<12; //EINT11=falling edge triggered
rEINTMASK &= ~(1<<11);
rINTMSK &= ~(BIT_EINT0 | BIT_EINT8_23);
}
/*********************************************************************************************
* name: int_test
* func: Extern interrupt test
* para: none
* ret: none
* modify:
* comment:
* EINT0 --- SB202 EINT11 --- SB203
*********************************************************************************************/
void int_test(void)
{
uart_printf("\n External Interrupt Test Example\n");
int_init();
lcd_disp_ascii8x16(40,60,BLUE,"External Interrupt Test!");
lcd_disp_ascii8x16(40,84,BLUE,"Press button SB1202 or SB1203:");
f_nKeyPress = 0;
while(!f_nKeyPress)// any key to exit.
{
// EINT0/2=falling edge triggered, EINT11=falling edge triggered
rEXTINT0 = (rEXTINT0 & ~((7<<8) | (0x7<<0))) | 0x2<<8 | 0x2<<0;
rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x2<<12;
}
uart_printf(" end.\n");
rINTMSK |= (BIT_EINT0 | BIT_EINT8_23);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -