📄 arminterrupt.c
字号:
#include "def.h"
#include "44b.h"
#include "44blib.h"
#include "ArmIntControl.h"
#include "ArmInterrupt.h"
void __irq Exint1(void); //For deal command.
void __irq Exint0(void);
#if(KEYBOARD_INTERRUPT==1)
void __irq Exint2(void);
void __irq Exint3(void);
void __irq Exint4567(void);
#endif
U8 flag928 =0;
U8 flag568 =0;
void ArmInitInt()
{
rPCONG |= 0x03; //Set GPIO as EXINT
rEXTINT &= ~(0x0f);//low lever interrupt clear
rEXTINT |= 0x02;//falling edge trigged
pISR_EINT0 = (unsigned)Exint0;
pISR_EINT1 = (unsigned)Exint1;
#if(KEYBOARD_INTERRUPT==1)
pISR_EINT2 = (unsigned)Exint2;
pISR_EINT3 = (unsigned)Exint3;
pISR_EINT4567= (unsigned)Exint4567;
#endif
#if(KEYBOARD_INTERRUPT==1)
rPCONG |= 0xC0; //EINT3
rPCONG |= 0x3ff0; //EINT2,3,4,5,6
rEXTINT &= ~(0xffff0f0);
rEXTINT |= 0x2221040; //EINT3: High level, EINT1: High level
#else
rPCONG |= 0xc; //EINT1
rEXTINT &= ~(0xffffff0);
rEXTINT |= 0x2222210; //EINT1: High level; EINT2,3,4,5,6: Low Level
#endif
rPUPG=0x0; //pull up enable
#if(KEYBOARD_INTERRUPT==1)
Enable_Intr(nINT_EXT1);
// Enable_Intr(nINT_EXT2);
// Enable_Intr(nINT_EXT3);
// Enable_Intr(nINT_EXT47);
#else
Enable_Intr(nINT_EXT1);
#endif
}
void Exint0()
{
rI_ISPC=BIT_EINT0;
usb_isr();
}
void Exint1()
{
rI_ISPC=BIT_EINT1;
}
#if(KEYBOARD_INTERRUPT==1)
void Exint2()
{
rI_ISPC=BIT_EINT2;
Uart_Printf("EINT2.\n");
}
void Exint3()
{
rI_ISPC=BIT_EINT3;
}
void Exint4567()
{
char which_int=0x00;
which_int=rEXTINTPND;
rEXTINTPND=0x0f;
rI_ISPC=BIT_EINT4567;
switch(which_int)
{
case 1:
Uart_Printf("EINT4...\n");
break;
case 2:
Uart_Printf("EINT5...\n");
break;
case 4:
Uart_Printf("EINT6...\n");
break;
}
}
#endif
void DisableInterrupt(void)
{
Disable_Intr(nINT_GLOBAL);
}
void EnableInterrupt(void)
{
Enable_Intr(nINT_GLOBAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -