?? externint.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 + -