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

📄 isr.c

📁 单片机设计mp3_recoder
💻 C
字号:

#include "D12.h"
#include "general.h"


/*++

Copyright (c) 2004 GoldInfo Technology Co., Ltd.

Module Name:

        D12.c

Abstract:

        Module related to D12 chip register operate,this is D12 module

Environment:

        ccs2.0 IDE

Revision History:

        02/5/20014      Mikal   created

--*/
//*****************************************************************************


UWord16  EpBuf[64] ;
UWord16  EpBuf1[64] ;

extern DEVICE_REQUEST  DeviceRequest;


//*****************************************************************************
/*++

Routine Description:

        process USB interrupt server function

Arguments:

        none

Return Value:

        none

--*/
void D12_USB_ISR(void)
{
   UWord16 i_st;


	i_st = D12_ReadInterruptRegister();
	

	if(i_st != 0) 
	{
		if(i_st & K_D12_INT_BUSRESET) 
		{
			D12_Bus_Reset();//
	
		}

		if(i_st & K_D12_INT_EOT)
			D12_DMA_Eot();

		if(i_st & K_D12_INT_SUSPENDCHANGE)
	

		if(i_st & K_D12_INT_ENDP0IN)
			D12_Ep0_Txdone();
			
			
		if(i_st & K_D12_INT_ENDP0OUT)
			D12_Ep0_rxdone();
			
		if(i_st & K_D12_INT_ENDP1IN)
			D12_Ep1_Txdone();
			
		if(i_st & K_D12_INT_ENDP1OUT)
			D12_Ep1_Rxdone();
			
		if(i_st & K_D12_INT_ENDP2IN) // bulk in
			D12_Main_Txdone();
			
		if(i_st & K_D12_INT_ENDP2OUT)
			D12_Main_Rxdone();//bulk out
	}



} 


//*****************************************************************************
/*++

Routine Description:

        process USB bus reset 

Arguments:

        none

Return Value:

        none

--*/
void D12_Bus_Reset(void)
{
}


//*****************************************************************************
/*++

Routine Description:

        process endpoint0 out transaction

Arguments:

        none

Return Value:

        none

--*/
void D12_Ep0_rxdone(void)
{

    UWord16  ep_last, type;//,i,j,Dataindex=1;
	ep_last = D12_ReadLastTransactionStatus(0); 
   
	if (ep_last & K_D12_SETUPPACKET) // the packet is setup packet
     
	{		
	    D12_ReadEndpoint(0, 8,(UCHAR *)(&(DeviceRequest)));//read the setup packet

		DeviceRequest.wValue =((DeviceRequest.reserve1)<<8)|(DeviceRequest.wValue);
		DeviceRequest.wIndex = ((DeviceRequest.reserve2)<<8)|(DeviceRequest.wIndex);
		DeviceRequest.wLength = ((DeviceRequest.reserve3)<<8)|(DeviceRequest.wLength);

		D12_AcknowledgeEndpoint(0);
		D12_AcknowledgeEndpoint(1);				
		
		type = (DeviceRequest.bmRequestType )&(0x60) ;
		
        if(type == 0x00) // standard request device to host 
		{			
		  CTLSETUP_StandardRequest();		
	    }	 //  standard request 
	  
        else if(type == 0x20)  // class request
	    { 
	      CTLSETUP_ClassRequest(); 
	    }
	
	
   } 

}



//*****************************************************************************
/*++

Routine Description:

        process endpoint0 in transaction 

Arguments:

        none

Return Value:

        none

--*/
void D12_Ep0_Txdone(void)
{

}




//*****************************************************************************
/*++

Routine Description:

        process DMA transaction 

Arguments:

        none

Return Value:

        none

--*/
void D12_DMA_Eot(void)
{

}



//*****************************************************************************
/*++

Routine Description:

        process endpoint1 in transaction 

Arguments:

        none

Return Value:

        none

--*/

void D12_Ep1_Txdone(void)
{
	D12_ReadLastTransactionStatus(3); 
}




//*****************************************************************************
/*++

Routine Description:

        process endpoint1 out transaction

Arguments:

        none

Return Value:

        none

--*/
void D12_Ep1_Rxdone(void)
{


	D12_ReadLastTransactionStatus(2); 

}





//*****************************************************************************
/*++

Routine Description:

        process endpoint2 in transaction 

Arguments:

        none

Return Value:

        none

--*/
void D12_Main_Txdone(void)
{


	D12_ReadLastTransactionStatus(5); 
	BULKIN_Packet();
}




//*****************************************************************************
/*++

Routine Description:

        process endpoint2 out transaction 

Arguments:

        none

Return Value:

        none

--*/
void D12_Main_Rxdone(void)
{


	D12_ReadLastTransactionStatus(4); 


	D12_ReadEndpoint(4, 64, EpBuf);
	G_EndPnt2status=D12_ReadEndpointStatus(4);
	G_EndPnt2status &= 0x60;
	
	if (G_EndPnt2status == 0x60)
   	D12_ReadEndpoint(4, 64, EpBuf1);
	
	D12_AcknowledgeEndpoint(0); // clear buffer	
	
    BULKOUT_Packet();
}

/*******************************************************************/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -