⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vikingiiinth.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:

void VIKING_INTH_Config()
{
	UWORD16 val=1;		
	UWORD16 i;
	UWORD16 temp=0;
	UWORD16 viking_fir=0;
			
	VIKINGII_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 + -