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

📄 gfbrds.c

📁 The purpose of this code is to demonstrate how to utilize EZUSB FX GPIF interface.
💻 C
📖 第 1 页 / 共 2 页
字号:
  EZUSB_SET_EP_BYTES(IN0BUF_ID,1);
  return(TRUE);        // Handled by user code
}

BOOL DR_GetStatus(void)
{
  return(TRUE);
}

BOOL DR_ClearFeature(void)
{
  return(TRUE);
}

BOOL DR_SetFeature(void)
{
  return(TRUE);
}


#define VX_B0 0xB0  // abort GPIF
#define VX_B1 0xB1  // flush/reset slave FIFOs
#define VX_B2 0xB2  // handle data xfr via TD_Poll
#define VX_B3 0xB3  // handle data xfr via DR_VendorCmd
#define VX_B4 0xB4  // clear debug leds
#define VX_B5 0xB5  // read aout fifo bc
#define VX_B6 0xB6  // read DONE
#define VX_B7 0xB7  // read aout fifo tc
#define VX_B8 0xB8  // read ain fifo tc

BOOL DR_VendorCmnd( void )
{
  switch( SETUPDAT[ 1 ] )
  {
    case VX_B0:
    { // ABORT GPIF waveform
      ABORT = 0xFF;
      *IN0BUF = 0xB0;           // return command type
      break;
    }
    case VX_B1:
    { // flush slave FIFOs
      ABFLUSH = 0xFF;
      *IN0BUF = 0xB1;           // return command type
      break;
    }
    case VX_B2:
    { // handle data xfr via TD_Poll
      zerolenpkt = 0;           // clr flag, just in case one was pending
	    EX0 = 1;                  // (re)enable INT0# pin ISR
	    ledX_rdvar = LED3_OFF;
      xfrvia_TD_Poll = 1;
      *IN0BUF = 0xB2;           // return command type
      break;
    }
    case VX_B3:
    { // handle data xfr via DR_VendorCmd
      xfrvia_TD_Poll = 0;
      *IN0BUF = 0xB3;           // return command type
      break;
    }
    case VX_B4:
    { // clear debug leds
      ledX_rdvar = LED0_OFF;
      ledX_rdvar = LED1_OFF;
      ledX_rdvar = LED2_OFF;
      ledX_rdvar = LED3_OFF;
      *IN0BUF = 0xB4;           // return command type
      break;
    }
    case VX_B5:
    { // read aout fifo bc
      *IN0BUF = AOUTBC;         // return command type
      break;
    }
    case VX_B6:
    { // read DONE
      *IN0BUF = IDLE_CS;         // return command type
      break;
    }
    case VX_B7:
    { // read aout fifo tc
      *IN0BUF = AOUTTC;         // return command type
      break;
    }
    case VX_B8:
    { // read ain fifo tc
      *IN0BUF = AINTC;          // return command type
      break;
    }
    default:
    {
      break;
    }
  }
  IN0BC = 0x01;                 // arm endp, # bytes to xfr
  EP0CS |= bmBIT1;              // ack handshake phase of device request
  return( FALSE );              // no errors, cmd handled okay
}

//-----------------------------------------------------------------------------
// USB Interrupt Handlers
//  The following functions are called by the USB interrupt jump table.
//-----------------------------------------------------------------------------

// Setup Data Available Interrupt Handler
void ISR_Sudav(void) interrupt 0
{
  GotSUD = TRUE;        // Set flag
  EZUSB_IRQ_CLEAR();
  USBIRQ = bmSUDAV;      // Clear SUDAV IRQ
}

// Setup Token Interrupt Handler
void ISR_Sutok(void) interrupt 0
{
  EZUSB_IRQ_CLEAR();
  USBIRQ = bmSUTOK;      // Clear SUTOK IRQ
}

void ISR_Sof(void) interrupt 0
{
  EZUSB_IRQ_CLEAR();
  USBIRQ = bmSOF;        // Clear SOF IRQ
}

void ISR_Ures(void) interrupt 0
{
  EZUSB_IRQ_CLEAR();
  USBIRQ = bmURES;      // Clear URES IRQ
}

// ISR for the IN Bulk NAK (IBN) interrupt.
void ISR_IBN(void) interrupt 0
{
}

void ISR_Susp(void) interrupt 0
{
  Sleep = TRUE;
  EZUSB_IRQ_CLEAR();
  USBIRQ = bmSUSP;
}

void ISR_Ep0in(void) interrupt 0
{
}

void ISR_Ep0out(void) interrupt 0
{
}

void ISR_Ep1in(void) interrupt 0
{
}

void ISR_Ep1out(void) interrupt 0
{
}

void ISR_Ep2in(void) interrupt 0
{
}

void ISR_Ep2out( void ) interrupt 0
{
}

void ISR_Ep3in(void) interrupt 0
{
}

void ISR_Ep3out(void) interrupt 0
{
}

void ISR_Ep4in(void) interrupt 0
{
}

void ISR_Ep4out(void) interrupt 0
{
}

void ISR_Ep5in(void) interrupt 0
{
}

void ISR_Ep5out(void) interrupt 0
{
}

void ISR_Ep6in(void) interrupt 0
{
}

void ISR_Ep6out(void) interrupt 0
{
}

void ISR_Ep7in(void) interrupt 0
{
}

void ISR_Ep7out(void) interrupt 0
{
}

//-----------------------------------------------------------------------------
// INT4 Interrupt Handlers
//  The following functions are called by the INT4 interrupt jump table.
//-----------------------------------------------------------------------------

void ISR_AINPF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmAINPF;      // Clear AINPF IRQ
}

void ISR_AINEF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmAINEF;      // Clear AINEF IRQ
}

void ISR_AINFF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmAINFF;      // Clear AINFF IRQ
}

void ISR_BINPF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBINPF;      // Clear BINPF IRQ
}

void ISR_BINEF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBINEF;      // Clear BINEF IRQ
}

void ISR_BINFF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBINFF;      // Clear BINFF IRQ
}

void ISR_AOUTPF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABOUTIRQ = bmAOUTPF;    // Clear AOUTPF IRQ
}

void ISR_AOUTEF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmAOUTEF;      // Clear AOUTEF IRQ
}

void ISR_AOUTFF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmAOUTFF;      // Clear AOUTFF IRQ
}

void ISR_BOUTPF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBOUTPF;      // Clear BOUTPF IRQ
}

void ISR_BOUTEF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBOUTEF;      // Clear BOUTEF IRQ
}

void ISR_BOUTFF(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  ABINIRQ = bmBOUTFF;      // Clear BOUTFF IRQ
}

void ISR_GPIFDONE(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  GENIRQ = bmGPIFDONE;    // Clear GPIFDONE IRQ
}

void ISR_GPIFWF( void ) 
interrupt 0
{  // GPIF FIFORd WF detected slave empty
  ABORT = 0xFF;              // abort to handle shortpkt

  EXIF &=  ~0x40;
  GENIRQ = bmGPIFWF;      // Clear GPIFWF IRQ
//TGE  INT4CLR = 0xFF;    // need to first enable AUTOCLR feature...
}

void ISR_DMADONE(void) interrupt 0
{
//  EXIF &=  ~0x40;
//  GENIRQ = bmDMADONE;    // Clear DMADONE IRQ
}

⌨️ 快捷键说明

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