📄 interrupt.c
字号:
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "HPI16.h"
#include "Interrupt.h"
extern void HPIC_Write(short);
static void __irq Eint11_19(void)
{
HPIC_Write(5);
if(rEINTPEND==(1<<11))
{
//HPI16_HPIC_WL = (HPI16_HPIC_WL | 0x4);
Uart_Printf("EINT11 interrupt is occurred.\n");
rEINTPEND=(1<<11);
}
else if(rEINTPEND==(1<<19))
{
//HPI16_HPIC_WL = (HPI16_HPIC_WL | 0x4);
Uart_Printf("EINT19 interrupt is occurred.\n");
rEINTPEND=(1<<19);
}
else
{
Uart_Printf("rEINTPEND=0x%x\n",rEINTPEND);
rEINTPEND=(1<<19)|(1<<11);
}
ClearPending(BIT_EINT8_23);
}
void HPI_ISR_function(void)
{
Uart_Printf("[External Interrupt Test through PF0/2/11/19]\n");
// rGPFCON = (rGPFCON & 0xffcc)|(1<<5)|(1<<1); //PF0/2 = EINT0/2
rGPGCON = (rGPGCON & 0xff3fff3f)|(1<<23)|(1<<7); //PG3/11 = EINT11/19
//rEXTINT0 = (rEXTINT0 & ~((7<<8) | (0x7<<0))) | 0x4<<8 | 0x4<<0; //EINT0/2=rising edge triggered
//rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x4<<12; //EINT11=rising edge triggered
//rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x4<<12; //EINT19=rising edge triggered
// 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
rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x2<<12; //EINT19=falling edge triggered
// pISR_EINT0=(U32)Eint0Int;
// pISR_EINT2=(U32)Eint2Int;
pISR_EINT8_23=(U32)Eint11_19;
rEINTPEND = 0xffffff;
rSRCPND = BIT_EINT0|BIT_EINT2|BIT_EINT8_23; //to clear the previous pending states
rINTPND = BIT_EINT0|BIT_EINT2|BIT_EINT8_23;
rEINTMASK=~( (1<<11)|(1<<19) );
rINTMSK=~(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
//rEINTMASK=0xffffff;
//rINTMSK=BIT_ALLMSK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -