亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fw.c

?? FS7805 使用APLIF的demoFS7805 使用APLIF的demo
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
* File:     Fw.C
* Contents: Firmware frameworks task dispatcher and device request parser source
*
* $Date:    04/06/06    Kimi    v0.1
* $Date:    04/25/06    Kimi    v0.2
* $Date:    04/30/06    Kimi    v0.3
* $Date:    01/23/07    Kevin   v0.4
* Copyright (c) 2006 Fameg, Inc. All rights reserved
*********************************************************************************************************
*/

#include "fs7805.h"
#include "fs7805regs.h"
#include "string.h"

const INT8U xdata WaveData[128] =
{
// Wave 0
/* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
// Wave 1
/* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
// Wave 2
/* LenBr */ 0x01,     0x02,     0x39,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Opcode*/ 0x00,     0x02,     0x07,     0x00,     0x00,     0x00,     0x00,     0x00,
/* LFun  */ 0x00,     0x00,     0x2D,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0xFF,     0xFF,     0xFF,     0x00,     0x00,     0x00,     0x00,     0x00,
// Wave 3
/* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
};

/*
*********************************************************************************************************
*                                       VARIABLE PROTOTYPES
*********************************************************************************************************
*/
union FIFODataLen
{
    INT16U  Val;
    INT8U   Byte[2];
};

   union FIFODataLen Length;
#ifdef  PINGPONG_FIFO
   INT8U SW_FifoOut_Toggle = 0, SW_FifoIn_Toggle = 0;
#endif
   INT16U UsbDmaBuffer;

/*
*********************************************************************************************************
*                                       FUNCTION PROTOTYPES
*********************************************************************************************************
*/
#ifdef  PINGPONG_FIFO
 void  FifoIn (INT8U *pReadBuffer, INT8U BufferNo, INT16U DataLen);
 void  FifoOut (INT8U *pReadBuffer, INT8U BufferNo);
 void  SendDataCmd (INT8U BufferNo);
#else
 void  FifoIn (INT8U *pReadBuffer, INT16U DataLen);
 void  FifoOut (INT8U *pReadBuffer);
 void  SendDataCmd (void);
#endif
 void  UsbBulkIn (INT8U *pReadBuffer, INT16U DataLen);
 void  UsbBulkOut (INT8U *pReadBuffer);
 void  UsbInit (void);
 void  KsocInit (void);

#ifdef  PINGPONG_FIFO
/*
*********************************************************************************************************
*                                             USBBULKOUT
*
* Description: Device receive data from host
*
* Arguments  : pReadBuffer   buffer address
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbBulkOut (INT8U *pReadBuffer)
{
    if ((EP2FIFOCS & bmFIFO0_FULL) && (EP2FIFOCS & bmFIFO1_FULL))
    {                                                  // FULL_0 = 1 and FULL_1 = 1
        if (SW_FifoOut_Toggle == 0)
        {
            FifoOut(pReadBuffer, 0);                   // Read FIFO0
        }
        else
        {
            FifoOut(pReadBuffer, 1);                   // Read FIFO1
        }
    }
    else if (EP2FIFOCS & bmFIFO0_FULL)                 // FULL_0 = 1
    {
        FifoOut(pReadBuffer, 0);                       // Read FIFO0
    }
    else if (EP2FIFOCS & bmFIFO1_FULL)                 // FULL_1 = 1
    {
        FifoOut(pReadBuffer, 1);                       // Read FIFO1
    }
}


/*
*********************************************************************************************************
*                                             USBBULKIN
*
* Description: Device send data to host
*
* Arguments  : pReadBuffer   buffer address
*
*              DataLen       Data Length
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbBulkIn (INT8U *pReadBuffer, INT16U DataLen)
{
    if ((!(EP1FIFOCS & bmFIFO0_FULL)) && (!(EP1FIFOCS & bmFIFO1_FULL)))
    {                                                  // FULL_0 = 0 and FULL_1 = 0
        if ((EP1FIFOCS & bmFIFO_TOG) == 0)
        {
            FifoIn(pReadBuffer, 0, DataLen);           // Write FIFO0
        }
        else
        {
            FifoIn(pReadBuffer, 1, DataLen);           // Write FIFO1
        }
    }
    else if (!(EP1FIFOCS & bmFIFO0_FULL))              // FULL_0 = 0
    {
        FifoIn(pReadBuffer, 0, DataLen);               // Write FIFO0
    }
    else if (!(EP1FIFOCS & bmFIFO1_FULL))              // FULL_1 = 0
    {
        FifoIn(pReadBuffer, 1, DataLen);               // Write FIFO1
    }

    if ((!(EP1FIFOCS & bmFIFO0_FULL)) && (!(EP1FIFOCS & bmFIFO1_FULL)))
    {                                                  // FULL_0 = 0 and FULL_1 = 0
        if (SW_FifoIn_Toggle == 0)
        {
            SendDataCmd(0);                            // Complete Write FIFO0
        }
        else
        {
            SendDataCmd(1);                            // Complete Write FIFO1
        }
    }
    else if (!(EP1FIFOCS & bmFIFO0_FULL))              // FULL_0 = 0
    {
        SendDataCmd(0);                                // Complete Write FIFO0
    }
    else if (!(EP1FIFOCS & bmFIFO1_FULL))              // FULL_1 = 0
    {
        SendDataCmd(1);                                // Complete Write FIFO1
    }
}


/*
*********************************************************************************************************
*                                             FIFOOUT
*
* Description: Device receive data from host using FIFO function
*
* Arguments  : pReadBuffer   buffer address
*
*              BufferNo      FIFO0 or FIFO1
*
* Returns    : none
*********************************************************************************************************
*/
void  FifoOut (INT8U *pReadBuffer, INT8U BufferNo)
{
    SW_FifoOut_Toggle       = !BufferNo;               // Invert SW_FifoOut_Toggle polarity

    if (BufferNo == 0)
    {
        Length.Byte[1]      = EP2CNT0L;                // Get low byte data
        Length.Byte[0]      = EP2CNTH & 0x07;          // Get high byte data
        UsbDmaBuffer        = DMA_FIFO2_0;             // Get FIFO address
    }
    else
    {
        Length.Byte[1]      = EP2CNT1L;
        Length.Byte[0]      = (EP2CNTH & 0x70) >> 4;
        UsbDmaBuffer        = DMA_FIFO2_1;
    }
    memcpy(pReadBuffer, (INT8U xdata *)UsbDmaBuffer, Length.Val);

    if (BufferNo == 0)                                 // Switch FIFO_Toggle and Clear FULL bit
    {
        EP2FIFOCS           = (EP2FIFOCS | bmFIFO_TOG_WE) | bmFIFO_TOG;
        EP2FIFOCS           = (EP2FIFOCS | bmFIFO0_FULL_WE) & (~bmFIFO0_FULL);
    }
    else
    {
        EP2FIFOCS           = (EP2FIFOCS | bmFIFO_TOG_WE) & (~bmFIFO_TOG);
        EP2FIFOCS           = (EP2FIFOCS | bmFIFO1_FULL_WE) & (~bmFIFO1_FULL);
    }
    EP2CS                   = EP2CS | bmEP_RXTXEN;     // Enable RXTX
}


/*
*********************************************************************************************************
*                                             FIFOIN
*
* Description: Device send data to host using FIFO function
*
* Arguments  : pReadBuffer   buffer address
*
*              BufferNo      FIFO0 or FIFO1
*
*              DataLen       Data Length
*
* Returns    : none
*********************************************************************************************************
*/
void  FifoIn (INT8U *pReadBuffer, INT8U BufferNo, INT16U DataLen)
{
    union
    {
        INT8U   Val;
        struct
        {
            INT8U   Count0 : 3;
            INT8U          : 1;
            INT8U   Count1 : 3;
            INT8U          : 1;
        } Bit;
    } HighReg;

    Length.Val              = DataLen;
    HighReg.Val             = EP1CNTH;

    if (BufferNo == 0)
    {
        EP1CNT0L            = Length.Byte[1];          // Write count low byte
        HighReg.Bit.Count0  = Length.Byte[0] & 0x07;
        HighReg.Val         = HighReg.Val | bmCNT0HWEN;
        EP1CNTH             = HighReg.Val;             // Write count high byte
        UsbDmaBuffer        = DMA_FIFO1_0;             // Get FIFO address
    }
    else
    {
        EP1CNT1L            = Length.Byte[1];
        HighReg.Bit.Count1  = Length.Byte[0] & 0x07;
        HighReg.Val         = HighReg.Val | bmCNT1HWEN;
        EP1CNTH             = HighReg.Val;
        UsbDmaBuffer        = DMA_FIFO1_1;
    }
    memcpy((INT8U xdata *)UsbDmaBuffer, pReadBuffer, DataLen);
                                                       // Copy data
}


/*
*********************************************************************************************************
*                                             SENDDATACMD
*
* Description: Complete IN operation function
*
* Arguments  : BufferNo      FIFO0 or FIFO1
*
* Returns    : none
*********************************************************************************************************
*/
void  SendDataCmd (INT8U BufferNo)
{
    if (BufferNo == 0)                                 // Set FULL bit
    {
        EP1FIFOCS           = (EP1FIFOCS | bmFIFO0_FULL_WE) | bmFIFO0_FULL;
    }
    else
    {
        EP1FIFOCS           = (EP1FIFOCS | bmFIFO1_FULL_WE) | bmFIFO1_FULL;
    }
    SW_FifoIn_Toggle        = !BufferNo;               // Invert SW_FifoOut_Toggle polarity
    EP1CS                   = EP1CS | bmEP_RXTXEN;     // Enable RXTX
}


#else
/*
*********************************************************************************************************
*                                             USBBULKOUT
*
* Description: Device receive data from host
*
* Arguments  : pReadBuffer   buffer address
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbBulkOut (INT8U *pReadBuffer)
{
    if (EP2FIFOCS & bmFIFO0_FULL)
    {
        FifoOut(pReadBuffer);                          // Read FIFO0
    }
}


/*
*********************************************************************************************************
*                                             USBBULKIN
*
* Description: Device send data to host
*
* Arguments  : pReadBuffer   buffer address
*
*              DataLen       Data Length
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbBulkIn (INT8U *pReadBuffer, INT16U DataLen)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦在线观看| 黄一区二区三区| 老司机精品视频线观看86| 国产成人免费视频网站 | 日韩一区二区三区免费观看 | 日韩一级免费观看| 日韩久久一区二区| 国产毛片精品一区| 538在线一区二区精品国产| 自拍偷拍国产精品| 国产美女在线观看一区| 欧美一区三区二区| 亚洲精品中文字幕乱码三区| 成人国产一区二区三区精品| 精品蜜桃在线看| 日本午夜精品一区二区三区电影| 色综合天天综合网天天狠天天| 久久亚洲欧美国产精品乐播| 五月激情综合色| 欧洲激情一区二区| 日韩久久一区二区| www.亚洲人| 国产精品国产精品国产专区不片| 国产在线看一区| 精品国产三级电影在线观看| 日本不卡1234视频| 欧美一区二区三区四区在线观看 | 久久99精品久久久久久动态图 | 成人精品鲁一区一区二区| 欧美不卡123| 国产自产2019最新不卡| 精品奇米国产一区二区三区| 精品一区中文字幕| 日韩欧美123| 国产毛片精品一区| 欧美高清一级片在线观看| 色94色欧美sute亚洲13| 中文字幕人成不卡一区| 盗摄精品av一区二区三区| 国产精品高潮呻吟| 91亚洲国产成人精品一区二区三| 国产精品美女一区二区在线观看| 成人av资源站| 一区av在线播放| 欧美日韩成人一区二区| 免费高清不卡av| 国产日产欧美一区二区三区| av激情综合网| 香蕉久久一区二区不卡无毒影院| 51精品秘密在线观看| 九一九一国产精品| 国产精品嫩草久久久久| 欧洲视频一区二区| 日av在线不卡| 久久精品视频一区二区| 色综合咪咪久久| 午夜影院在线观看欧美| 精品国产sm最大网站免费看| 成人综合激情网| 亚洲va欧美va人人爽| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 天堂成人国产精品一区| 日韩欧美一卡二卡| 91在线看国产| 亚洲va国产va欧美va观看| 26uuu精品一区二区在线观看| aa级大片欧美| 精品夜夜嗨av一区二区三区| 亚洲婷婷综合久久一本伊一区 | 亚洲综合一区二区精品导航| 555夜色666亚洲国产免| 成人黄色av电影| 男女男精品网站| 亚洲欧美色综合| 国产欧美日产一区| 欧美美女一区二区在线观看| 国产+成+人+亚洲欧洲自线| 亚洲成人福利片| 中文字幕一区二区在线播放| 91精品久久久久久蜜臀| 色综合色狠狠综合色| 激情五月婷婷综合| 亚洲成人中文在线| 成人欧美一区二区三区视频网页 | 美女mm1313爽爽久久久蜜臀| 国产精品久久看| 精品va天堂亚洲国产| 欧美日韩午夜在线视频| 99综合电影在线视频| 老汉av免费一区二区三区| 一区二区三区波多野结衣在线观看| 亚洲精品一区二区精华| 欧美丰满高潮xxxx喷水动漫| 一本色道亚洲精品aⅴ| 国产精一区二区三区| 午夜精品123| 中文字幕亚洲综合久久菠萝蜜| 精品国产91乱码一区二区三区 | 欧美激情综合网| 精品国产乱码久久久久久蜜臀 | 一本到三区不卡视频| 风间由美性色一区二区三区| 久久精品国产亚洲aⅴ| 亚洲国产精品久久人人爱蜜臀| 国产精品久久久久久久久果冻传媒 | 欧美日韩一区高清| 91美女视频网站| jizz一区二区| av男人天堂一区| 99热在这里有精品免费| 99国产一区二区三精品乱码| 成人av片在线观看| 91蜜桃网址入口| 日本黄色一区二区| 欧美亚洲一区三区| 精品视频1区2区3区| 欧美在线不卡视频| 欧美日韩国产在线播放网站| 欧美日韩一本到| 欧美群妇大交群的观看方式| 91精品综合久久久久久| 91精品国产色综合久久不卡电影| 在线综合+亚洲+欧美中文字幕| 在线播放亚洲一区| 精品日产卡一卡二卡麻豆| 2024国产精品视频| 亚洲欧洲精品一区二区精品久久久| 亚洲欧洲www| 亚洲午夜久久久久久久久电影院| 亚洲18影院在线观看| 麻豆国产欧美一区二区三区| 国内成人免费视频| 不卡影院免费观看| 91高清在线观看| 日韩一区二区三区免费看| 久久久影视传媒| 亚洲欧美日韩在线不卡| 天堂va蜜桃一区二区三区漫画版| 美女视频黄久久| 成人精品一区二区三区中文字幕| 在线中文字幕一区| 日韩一二三四区| 欧美国产激情一区二区三区蜜月| 亚洲另类中文字| 麻豆成人在线观看| 成人理论电影网| 欧美一区日韩一区| 中文字幕一区在线观看视频| 亚洲成av人片在线| 国产成人高清视频| 欧美视频一区二区| 欧美经典一区二区三区| 亚洲一二三四久久| 国产精品综合视频| 欧美日韩亚洲综合一区| 国产欧美日韩另类一区| 午夜电影一区二区| 国产一区不卡精品| 欧美三级午夜理伦三级中视频| 久久久久久久综合日本| 亚洲综合在线电影| 国产美女视频91| 欧美一区二区视频免费观看| 国产精品免费网站在线观看| 美脚の诱脚舐め脚责91| 欧美综合欧美视频| 亚洲国产精品高清| 久久精品99国产精品日本| 欧洲国产伦久久久久久久| 久久一区二区三区四区| 视频一区二区国产| 色综合中文综合网| 欧美美女激情18p| 亚洲欧洲精品天堂一级| 国产中文字幕一区| 51午夜精品国产| 亚洲一区中文在线| 成人高清在线视频| 久久欧美中文字幕| 蜜桃视频在线一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产精品一区二区x88av| 日韩三级伦理片妻子的秘密按摩| 亚洲美女免费在线| 91在线视频网址| 国产精品久久综合| 丰满亚洲少妇av| 久久婷婷色综合| 精品一区二区三区免费| 欧美精品v国产精品v日韩精品| 一区二区三区久久久| 91丨九色丨蝌蚪富婆spa| 中国色在线观看另类| 国产精品自拍av| 久久精品人人做| 国产精品亚洲第一区在线暖暖韩国| 日韩三级电影网址| 麻豆国产精品777777在线| 精品国产一区二区亚洲人成毛片| 日韩成人免费电影|