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

📄 externint.c

📁 台湾凌阳单片机USB驱动源程序
💻 C
字号:
//====================================================================================//
// 文件名:    ExterInt.asm
// 描  述:   该文件的程序主要用于处理PDIUSBD12中断
// 日  期:   2003/04/03
//====================================================================================//

#include "D12CI.h"
#include "usbmain.h"
#include "usb11.h"
#include "isr.h"

extern CONTROL_TRANSFERS ControlData;
extern void F_TurnOffSecondLed(void);
extern void F_TurnOnSecondLed(void);
extern void	F_TurnOffFirstLed(void);
extern void F_TurnOnFirstLed(void);
extern void F_Ep0_RxDone_Detail(void);
extern void F_Ep0_TxDone_Detail(void);

void F_USB_Isr(void);
void F_Ep0_TxDone(void);
void F_Ep0_RxDone(void);
void F_Ep1_TxDone(void);
void F_Ep1_RxDone(void);
void F_Main_TxDone(void);
void F_Main_TxDone(void);
void F_DMA_Eot(void);

EPPFLAGS bEPPflags;
unsigned int  i_st;
unsigned int ep_last;

unsigned int  EpBuf[EP2_PACKET_SIZE];
unsigned int  MainEpBuf[64];
unsigned int  OneRecByteNum=0;


//=====================================================================
// 函数:    F_USB_Isr
// 语法:    void F_USB_Isr(void)
// 描述:    PDIUSBD12中断的各个中断源的处理
// 参数:    无
// 返回:    无
//=====================================================================

void F_USB_Isr(void)
{
	bEPPflags.bits.in_isr = 1;
	i_st = F_D12_ReadInterruptRegister();
	if(i_st != 0)
	{
		if(i_st & D12_INT_BUSRESET)      
		{
			bEPPflags.bits.bus_reset = 1;
		}
		if(i_st & D12_INT_EOT) 
		{
			F_DMA_Eot();
		}
		if(i_st & D12_INT_SUSPENDCHANGE)
		{
			bEPPflags.bits.suspend = 1;
		}
		if(i_st & D12_INT_ENDP0IN)   
		{
		 	F_Ep0_TxDone();
		}
		if(i_st & D12_INT_ENDP0OUT)    
		{
			F_Ep0_RxDone();
		}
			
		if(i_st & D12_INT_ENDP1IN)
		{
			F_Ep1_TxDone();
		}
		if(i_st & D12_INT_ENDP1OUT)
		{
			F_Ep1_RxDone();
		}
		if(i_st & D12_INT_ENDP2IN)
		{
			F_Main_TxDone();
		}
		
		if(i_st & D12_INT_ENDP2OUT)
		{
			F_Main_RxDone();
		}
	}
	bEPPflags.bits.in_isr = 0;
}
//=====================================================================
// 函数:    F_DMA_Eot
// 语法:    void F_DMA_Eot(void)
// 描述:    PDIUSBD12的DMA处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_DMA_Eot(void)
{
}
//=====================================================================
// 函数:    F_Ep0_RxDone
// 语法:    void F_Ep0_RxDone(void)
// 描述:    端点0,接收数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Ep0_RxDone(void)
{
	ep_last = F_D12_ReadLastTransactionStatus(0); // Clear interrupt flag
	F_Ep0_RxDone_Detail();
}
//=====================================================================
// 函数:    F_Ep0_TxDone
// 语法:    void F_Ep0_TxDone(void)
// 描述:    端点0,发送数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Ep0_TxDone(void)
{
    
	F_D12_ReadLastTransactionStatus(1);
	F_Ep0_TxDone_Detail();

}
//=====================================================================
// 函数:    F_Ep1_TxDone
// 语法:    void F_Ep1_TxDone(void)
// 描述:    端点1,发送数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Ep1_TxDone(void)
{
	F_D12_ReadLastTransactionStatus(3); //Clear interrupt flag
}
//=====================================================================
// 函数:    F_Ep1_RxDone
// 语法:    void F_Ep1_RxDone(void)
// 描述:    端点1,接收数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Ep1_RxDone(void)
{
	F_D12_ReadLastTransactionStatus(2); // Clear interrupt flag 
}

//=====================================================================
// 函数:    F_Main_TxDone
// 语法:    void F_Main_TxDone(void)
// 描述:    端点1,发送数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Main_TxDone(void)
{
	F_D12_ReadLastTransactionStatus(5); // Clear interrupt flag 
}
//=====================================================================
// 函数:    F_Main_RxDone
// 语法:    void F_Main_RxDone(void)
// 描述:    端点2,接收数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Main_RxDone(void)
{
	unsigned int len;
	F_D12_ReadLastTransactionStatus(4); /* Clear interrupt flag */
	len = F_D12_ReadEndpoint(4,sizeof(MainEpBuf),MainEpBuf);
	if(len != 0)
    {
		  bEPPflags.bits.ep2_rxdone=1;
		  OneRecByteNum=len;
    }
}

⌨️ 快捷键说明

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