📄 vikingii_ulpd
字号:
#include "UART_IrDA.h"
#include "vikingII.h"
#include "GPIO.h"
#include "GPIO_w.h"
#include "interrupt_mapping.h"
int DSP_INT0_occur_flag=0;
int MCU_INT_occur_flag=0;
int viking_fir_isr;
void VIKING_INTH_Config()
{
UWORD16 val=1;
UWORD16 i;
UWORD16 temp=0;
UWORD16 viking_fir=0;
VIKING_Init();
VIKING_INTH_CTRL_DSP_REG |= 0x1;
VIKING_INTH_MIR_MCU_REG = 0xffff;
VIKING_INTH_MIR_DSP_REG = 0xffff;
InterruptClearPending(IRQ1_GPIO1_INT);
GPIO_AcknoledgeInterrupt(GPIO_7);
GPIO_AcknoledgeInterrupt(GPIO_13);
VIKNGII_GPIO_setup();
while(val)
{
UART_Printf(UART2,"\n\r");
UART_Printf(UART2,"==========================================\n");
UART_Printf(UART2,"Viking INTH module Test Menu\n");
UART_Printf(UART2,"==========================================\n");
UART_Printf(UART2,"0 : Go back to upper menu\n");
UART_Printf(UART2,"1 : test interrupt SUBFRAME_INT0(GPIO7)\n");
UART_Printf(UART2,"2 : test interrupt MCU_INT(GPIO13)\n");
UART_Printf(UART2,"------------------------------------------\n\r");
UART_Printf(UART2,"Please Enter your choice: \n ");
val = UART_GetNum(UART2);
UART_Printf(UART2,"\n");
switch (val)
{
case 0:
{
break;
}
case 1:
{
GPIO_AcknoledgeInterrupt(GPIO_7);
DSP_INT0_occur_flag = 0;
VIKING_INTH_CTRL_DSP_REG = 0x20;
while(!DSP_INT0_occur_flag);
VIKING_INTH_CTRL_DSP_REG |= 0x1;
DSP_INT0_occur_flag = 0;
UART_Printf(UART2,"Press any key to continue... \n ");
UART_GetNum(UART2);
break;
}
case 2:
{
MCU_INT_occur_flag = 0;
//open viking inth
VIKING_INTH_MIR_MCU_REG = 0xfffe;
//read operation to VIKING_INTH_IFR_MCU can make MCU_INT go high
viking_fir = VIKING_INTH_IFR_MCU_REG;
//wait for MCU_INT occur
while(!MCU_INT_occur_flag);
MCU_INT_occur_flag = 0;
//close MCU_INT
VIKING_INTH_MIR_MCU_REG = 0xffff;
viking_fir = ~viking_fir_isr;
for(i=0;i<16;i++)
{
temp = 1L<<i;
if(temp & viking_fir)
{
UART_Printf(UART2,"And the interrupt is #%d of MCU_INT.\n", i);
}
}
UART_Printf(UART2,"Press any key to continue... \n ");
UART_GetNum(UART2);
break;
}
default:
UART_Printf(UART2,"You have select the wrong choice\n\r");
}
}
}
void VIKNGII_GPIO_setup()
{
GPIO_SetDirection(GPIO_7, GPIO_INPUT); //GPIO-7, SUBFRAME_INT1
GPIO_SetDirection(GPIO_13, GPIO_INPUT); //GPIO-13, MCU_INT
GPIO_SetEdgeCtrl(GPIO_7, FALLING_EDGE_DETECT); //GPIO-7
GPIO_SetEdgeCtrl(GPIO_13, FALLING_EDGE_DETECT); //GPIO-13
GPIO_SetOnePinInterruptMask(GPIO_7, IT_ENABLE); //GPIO-7 in GRP1 enabled
GPIO_SetOnePinInterruptMask(GPIO_13, IT_ENABLE); //GPIO-13 in GRP2 enabled
GPIO_AcknoledgeInterrupt(GPIO_7); //enable GPIO_MODULE1 GPIO7 to generate new i
GPIO_AcknoledgeInterrupt(GPIO_13); //enable GPIO_MODULE1 GPIO13 to generate new int
GPIO_ConfigureInterruptEnable(GPIO_7,LOW_LEVEL_DETECT,vikingII_SubFrame_isr_hander);
GPIO_ConfigureInterruptEnable(GPIO_13,LOW_LEVEL_DETECT,vikingII_MCU_isr_hander);
}
void vikingII_SubFrame_isr_hander()
{
DSP_INT0_occur_flag = 1;
viking_fir_isr = VIKING_INTH_CTRL_DSP_REG;
}
void vikingII_MCU_isr_hander()
{
MCU_INT_occur_flag = 1;
viking_fir_isr = VIKING_INTH_IFR_MCU_REG;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -