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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb.c

?? 一個(gè)簡(jiǎn)單的helloworld編程
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    // Prepare to read data from the host into this buffer.
    sUSB.pucBulkOut = pucData;
    sUSB.ulBulkOutCount = ulLength;
    return(1);
}

//****************************************************************************
//
// USBReceiveBulkDone determines if the data receive from the bulk endpoint
// has completed.
//
//****************************************************************************
unsigned long
USBReceiveBulkDone(void)
{
    // Is there more data to receive from the bulk endpoint?
    if(sUSB.ulBulkOutCount)
    {
        // There's more data to receive, so indicate that we're not done.
        return(0);
    }
    else
    {
        // We've received all the data, so indicate that we're done.
        return(1);
    }
}

//****************************************************************************
//
// USBReceiveCommand reads a block of data from the host via the bulk endpoint 1.
//
//****************************************************************************
unsigned long
USBReceiveCommand(unsigned char *pucData, unsigned long ulLength)
{
    // If a block is already being read, then return a failure.
    if(sUSB.ulCommandOutCount)
    {
        return(0);
    }

    // Prepare to read data from the host into this buffer.
    sUSB.pucCommandOut = pucData;
    sUSB.ulCommandOutCount = ulLength;
    return(1);
}

//****************************************************************************
//
// USBReceiveCommandDone determines if the data receive from the bulk endpoint
// has completed.
//
//****************************************************************************
unsigned long
USBReceiveCommandDone(void)
{
    // Is there more data to receive from the bulk endpoint?
    if(sUSB.ulCommandOutCount)
    {     // There's more data to receive, so indicate that we're not done.
         return(0);
    }
    else
    {
        // We've received all the data, so indicate that we're done.
     return(1);
    }
}

//****************************************************************************
//
// USBSendACKDone determines if the data transmit to the bulk endpoint 2 has
// completed.
//
//****************************************************************************
unsigned long
USBSendACKDone(void)
{
     // Is there more data to be sent to the bulk endpoint?
    if(sUSB.ulACKInCount != 0)
    {
        // There's more data to transmit, so indicate that we're not done.
         return(0);
    }
    else
    {   // We've sent all the data, so indicate that we're done.
         return(1);
    }
}

//****************************************************************************
//
// USBSendBulk transmits a block of data back to the host via the bulk
// endpoint.
//
//****************************************************************************
unsigned long
USBSendBulk(const unsigned char *pucData, unsigned long ulLength)
{
    // If a block is already being transmitted, then return a failure.
    if(sUSB.ulBulkInCount)
    {
        return(0);
    }
    // Prepare to transmit this block back to the host.
    sUSB.pucBulkIn = pucData;
    sUSB.ulBulkInCount = ulLength;

     USBWriteEndpoint(USB_ENDPOINT_BULK_IN, &sUSB.pucBulkIn, &sUSB.ulBulkInCount);

    return(1);
}

//****************************************************************************
//
// USBSendBulkDone determines if the data transmit to the bulk endpoint has
// completed.
//
//****************************************************************************
unsigned long
USBSendBulkDone(void)
{
    // Is there more data to be sent to the bulk endpoint?
    if(sUSB.ulBulkInCount)
    {
        // There's more data to transmit, so indicate that we're not done.
        return(0);
    }
    else
    {
        // We've sent all the data, so indicate that we're done.
         return(1);
    }
}


//****************************************************************************
//
// USBSendControlDone determines if the data transmit to the control endpoint
// has completed.
//
//****************************************************************************
unsigned long
USBSendControlDone(void)
{
    // Is there more data to be sent to the control endpoint?
    if(sUSB.ulControlInCount)
    {
        // There's more data to transmit, so indicate that we're not done.
        return(0);
    }
    else
    {
        // We've sent all the data, so indicate that we're done.
        return(1);
    }
}

void USBISRPOLLING(int number)
{
    unsigned long ulIntStatus, ulTransactionStatus, ulLength;
    unsigned char *pucChar;
 
    //
    // Read the PDIUSBD12 interrupt register.
    //
    USBWriteCommand(USB_COMMAND_READ_INTERRUPT);
    ulIntStatus = USBReadData();
    ulIntStatus |= USBReadData() << 8;

    //
    // Do nothing if there was a bus reset.
    //
    if(ulIntStatus & USB_INT1_BUS_RESET)
    {
        if (verbose)
            printf("Host Send BUS-Reset Command.\n");
      
        return;
    }

    //
    // Handle an interrupt on the bulk out endpoint.
    //
    if(ulIntStatus & USB_INT1_ENDPOINT2_OUT)
    {
        if (verbose)
            printf("Occur Main-Out-Endpoint Interrupt.\n");

        //
        // Read the status of the last transaction on the bulk out endpoint.
        //
        USBWriteCommand(USB_COMMAND_READ_LAST_XACTION_STATUS +
                        USB_ENDPOINT_BULK_OUT);
        ulTransactionStatus = USBReadData();

        //
        // Was a packet of data received successfully?
        //
        if(ulTransactionStatus & USB_XACTION_STATUS_DATA_RX_TX_SUCCESS)
        {
            //
            // If there is a buffer to read this data into, then read the data
            // into that buffer.
            //
            //
            // Read the packet.
            //
            USBReadEndpoint(USB_ENDPOINT_BULK_OUT, &sUSB.pucBulkOut,&sUSB.ulBulkOutCount);
        }
    }

    //
    // Handle an interrupt on the control out endpoint.
    //
    if(ulIntStatus & USB_INT1_CONTROL_OUT)
    {
        if (verbose)
            printf("Occur Control-Out-Endpoint Interrupt.\n");

        //
        // Read the status of the last transaction on the control out endpoint.
        //
        USBWriteCommand(USB_COMMAND_READ_LAST_XACTION_STATUS +
                        USB_ENDPOINT_CONTROL_OUT);
        ulTransactionStatus = USBReadData();

        //
        // Was a setup packet received?
        //
        if(ulTransactionStatus & USB_XACTION_STATUS_SETUP_PACKET)
        {
            //
            // Read the packet.
            //
            pucChar = (U8 *)&sUSB.sControlOut;
            ulLength = sizeof(ControlTransfer);
            if(USBReadEndpoint(USB_ENDPOINT_CONTROL_OUT, &pucChar,&ulLength) != sizeof(ControlTransfer))
            {
                //
                // The size of the setup packet is incorrect, so stall both of
                // the control endpoints.
                //
                USBStallEndpoint(USB_ENDPOINT_CONTROL_OUT, 1);
                USBStallEndpoint(USB_ENDPOINT_CONTROL_IN, 1);
            }
            else
            {
                //
                // Acknowledge both the control in and control out endpoints,
                // and send a clear buffer command to the control out endpoint.
                //
                USBWriteCommand(USB_COMMAND_SELECT_ENDPOINT +
                                USB_ENDPOINT_CONTROL_OUT);
                USBWriteCommand(USB_COMMAND_ACKNOWLEDGE_ENDPOINT);
                USBWriteCommand(USB_COMMAND_CLEAR_BUFFER);
                USBWriteCommand(USB_COMMAND_SELECT_ENDPOINT +
                                USB_ENDPOINT_CONTROL_IN);
                USBWriteCommand(USB_COMMAND_ACKNOWLEDGE_ENDPOINT);

                //
                //
                // Process the command in the setup packet.
                //
                if(((sUSB.sControlOut.bmRequestType & USB_RT_TYPE_MASK) ==
                    USB_RT_TYPE_STANDARD) && (sUSB.sControlOut.bRequest < 16))
                {
                    //
                    // This is a standard request, so call the appropriate
                    // routine.
                    //
                    (*USBStandardDeviceRequest[sUSB.sControlOut.bRequest])();
                }
                else
                {
                    //
                    // All other requests are treated as reserved requests.
                    //
                    USBReserved();
                }
            }
        }
        else
        {
            //
            // The packet was not a setup packet, so ignore it.  Send a clear
            // buffer command to the control out endpoint so it will receive
            // new packets.
            //
            USBWriteCommand(USB_COMMAND_SELECT_ENDPOINT +
                            USB_ENDPOINT_CONTROL_OUT);
            USBWriteCommand(USB_COMMAND_CLEAR_BUFFER);

            //
            // Acknowledge both the control in and control out endpoints.
            //
            USBWriteCommand(USB_COMMAND_ACKNOWLEDGE_ENDPOINT);
            USBWriteCommand(USB_COMMAND_SELECT_ENDPOINT +
                            USB_ENDPOINT_CONTROL_IN);
            USBWriteCommand(USB_COMMAND_ACKNOWLEDGE_ENDPOINT);
        }
    }

    //
    // Handle an interrupt on the control in endpoint.
    //
    if(ulIntStatus & USB_INT1_CONTROL_IN)
    {
        if (verbose)
            printf("Occur Control-In--Endpoint Interrupt.\n");

        //
        // Read the status of the last transaction on the control in endpoint.
        //
        USBWriteCommand(USB_COMMAND_READ_LAST_XACTION_STATUS +
                        USB_ENDPOINT_CONTROL_IN);
        USBReadData();

        //
        // Was this the last block of data to be sent back to the host?
        //
        if(sUSB.ulControlInCount != 0)
        {
            //
            // Send the next packet of data to the host.
            //
            USBWriteEndpoint(USB_ENDPOINT_CONTROL_IN, &sUSB.pucControlIn,
                             &sUSB.ulControlInCount);
        }
        else
        {
            //
            // There is no more data to send, so send an empty packet.
            //
            ulLength = 0;
            USBWriteEndpoint(USB_ENDPOINT_CONTROL_IN, 0, &ulLength);
        }
    }

    //
    // Handle an interrupt on the bulk in endpoint.
    //
    if(ulIntStatus & USB_INT1_ENDPOINT2_IN)
    {
        if (verbose)
            printf("Occur Main-In--Endpoint Interrupt.\n");

        //
        // Read the status of the last transaction on the bulk in endpoint.
        //
        USBWriteCommand(USB_COMMAND_READ_LAST_XACTION_STATUS +
                        USB_ENDPOINT_BULK_IN);
        USBReadData();

        //
        // Was this the last block of data to be sent back to the host?
        //
        if(sUSB.ulBulkInCount != 0)
        {
            //
            // Send the next packet of data to the host.
            //
            USBWriteEndpoint(USB_ENDPOINT_BULK_IN, &sUSB.pucBulkIn,
                             &sUSB.ulBulkInCount);
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品v| 精品国产三级电影在线观看| 欧美激情艳妇裸体舞| 国产精品99久久不卡二区| ww亚洲ww在线观看国产| 国产精品一区二区在线观看不卡 | 精品国产乱码久久久久久牛牛 | 中文字幕 久热精品 视频在线| 国产精品自拍网站| 久久青草欧美一区二区三区| 国产成人精品在线看| 中文字幕一区二区三区不卡| 色欧美日韩亚洲| 视频一区视频二区在线观看| 日韩精品一区二区三区蜜臀| 国产一区二区三区观看| 日本一区二区在线不卡| 色999日韩国产欧美一区二区| 亚洲.国产.中文慕字在线| 日韩欧美激情四射| 成人v精品蜜桃久久一区| 一区二区三区四区在线播放| 欧美精品第1页| 国产精品99精品久久免费| 亚洲精品视频免费观看| 欧美一区二区网站| 成人高清在线视频| 天天综合天天做天天综合| 久久久久久综合| 欧美视频一区二区三区在线观看 | 精品一区二区三区免费观看 | 中文字幕在线不卡视频| 在线区一区二视频| 精彩视频一区二区三区| 亚洲啪啪综合av一区二区三区| 91精品国产麻豆| 91在线精品一区二区| 免费在线观看一区二区三区| **欧美大码日韩| 日韩美女一区二区三区四区| 91小视频在线免费看| 国内精品自线一区二区三区视频| 亚洲日本乱码在线观看| 精品国产区一区| 在线免费一区三区| 国产乱码精品一区二区三| 亚洲大尺度视频在线观看| 国产欧美精品一区二区色综合| 91精品国产欧美日韩| 色婷婷精品久久二区二区蜜臀av | 热久久免费视频| 亚洲男人的天堂在线aⅴ视频| 欧美tickling网站挠脚心| 欧美日韩黄视频| 99久久国产免费看| 国产在线精品免费| 五月激情六月综合| 一区二区三区在线观看视频| 久久精品亚洲麻豆av一区二区 | 欧美视频一二三区| 国产69精品久久久久777| 日韩高清不卡一区二区| 亚洲永久精品国产| 综合分类小说区另类春色亚洲小说欧美| ww久久中文字幕| www激情久久| 精品美女一区二区| 91精品国产综合久久久蜜臀粉嫩| 欧美日免费三级在线| 在线观看免费视频综合| 色综合色综合色综合色综合色综合| 国产福利不卡视频| 国产精品88888| 极品少妇xxxx精品少妇| 日韩高清在线不卡| 青椒成人免费视频| 看片的网站亚洲| 韩日av一区二区| 韩国中文字幕2020精品| 国产一区二区在线免费观看| 激情五月播播久久久精品| 美国一区二区三区在线播放| 日产精品久久久久久久性色| 三级亚洲高清视频| 日本不卡不码高清免费观看 | 国内一区二区视频| 国产精品综合一区二区| 风间由美一区二区三区在线观看 | 精品国产sm最大网站免费看| 日韩免费视频一区二区| 精品久久久久99| 精品999在线播放| 久久这里都是精品| 欧美激情资源网| 亚洲精品自拍动漫在线| 亚洲在线免费播放| 秋霞午夜av一区二区三区| 久久国产福利国产秒拍| 国产激情视频一区二区三区欧美| 成人免费观看视频| 91美女在线观看| 欧美日韩一级片在线观看| 日韩三级电影网址| 国产网站一区二区| 亚洲精品免费视频| 日韩中文字幕不卡| 国产九九视频一区二区三区| 91丝袜美腿高跟国产极品老师| 在线观看免费一区| 精品成人在线观看| 国产精品白丝在线| 肉丝袜脚交视频一区二区| 国产一区二区影院| 欧美在线制服丝袜| 日韩三级在线免费观看| 中文幕一区二区三区久久蜜桃| 亚洲精品国产精华液| 蜜臀av性久久久久蜜臀aⅴ| 粉嫩aⅴ一区二区三区四区五区| 91免费小视频| 日韩欧美国产三级电影视频| 中文在线免费一区三区高中清不卡| 亚洲免费观看在线观看| 精品一区免费av| 欧洲中文字幕精品| 久久久美女毛片| 香港成人在线视频| 成人免费视频caoporn| 欧美一卡二卡在线| 国产精品久久久久久妇女6080| 亚洲国产精品久久艾草纯爱| 国产91富婆露脸刺激对白| 欧美一区二区免费| 亚洲精品国产成人久久av盗摄 | 亚洲手机成人高清视频| 青草av.久久免费一区| 97精品国产97久久久久久久久久久久| 欧美电影一区二区| 亚洲乱码日产精品bd| 国产成人啪午夜精品网站男同| 欧美久久高跟鞋激| 亚洲天堂精品在线观看| 国产福利91精品一区| 91精品国产欧美一区二区成人| 亚洲精品免费电影| 99精品久久99久久久久| 欧美α欧美αv大片| 日韩精品欧美成人高清一区二区| 成人动漫视频在线| 久久色.com| 精品一区二区三区在线观看 | 国产午夜久久久久| 久久se这里有精品| 91精品婷婷国产综合久久性色| 亚洲在线视频一区| 91麻豆高清视频| 国产精品女人毛片| 国产精品亚洲а∨天堂免在线| 精品欧美乱码久久久久久| 日韩电影网1区2区| 欧美另类一区二区三区| 一区二区在线电影| 99九九99九九九视频精品| 国产精品无遮挡| 粉嫩aⅴ一区二区三区四区五区| 久久精品男人天堂av| 激情图区综合网| 精品国产一二三| 国产乱淫av一区二区三区| 欧美大片一区二区| 精品一区二区在线视频| 久久亚区不卡日本| 国产成a人亚洲| 国产精品毛片a∨一区二区三区| 成人永久免费视频| 国产精品天干天干在线综合| eeuss影院一区二区三区| 国产精品国产三级国产专播品爱网 | 欧美电影精品一区二区| 久久aⅴ国产欧美74aaa| 久久亚洲精品小早川怜子| 国产精品18久久久久久久久| 亚洲国产成人一区二区三区| 成人免费高清视频| 一个色妞综合视频在线观看| 欧美影院精品一区| 免费观看日韩电影| 国产亚洲婷婷免费| av在线播放一区二区三区| 亚洲欧美激情一区二区| 欧美色爱综合网| 国产综合色产在线精品| 国产精品免费aⅴ片在线观看| 91色|porny| 青青草91视频| 国产精品久久久久影院色老大| 欧洲一区在线电影| 久久99国内精品| 亚洲丝袜自拍清纯另类| 777奇米成人网|