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

📄 externint.c

📁 凌阳实验箱测试程序 包括自检程序```test````usb
💻 C
字号:
//====================================================================================//
// 文件名:    ExterInt.asm
// 描  述:   该文件的程序主要用于处理PDIUSBD12中断
// 日  期:   2003/04/03
//====================================================================================//
#include "D12CI.h"
#include "chap9.h"
extern CONTROL_TRANSFERS ControlData;
extern void F_Ep0_RxDone_Detail(void);
extern void F_Ep0_TxDone_Detail(void);
extern EPPFLAGS bEPPflags;

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_RxDone(void);
void F_DMA_Eot(void);
unsigned int  i_st;
unsigned int ep_last;
//=====================================================================
// 函数:    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)
{
	bEPPflags.bits.Ep1_SendDataFlag=1;
	F_D12_ReadLastTransactionStatus(3); //Clear interrupt flag
}
//=====================================================================
// 函数:    F_Ep1_RxDone
// 语法:    void F_Ep1_RxDone(void)
// 描述:    端点1,接收数据处理
// 参数:    无
// 返回:    无
//=====================================================================
void F_Ep1_RxDone(void)
{
	bEPPflags.bits.Ep1_ReceiveDataFlag=1;
	//F_D12_ReadLastTransactionStatus(2); // Clear interrupt flag 
}

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

⌨️ 快捷键说明

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