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

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

?? main.c

?? AVR Devolpment Board
?? C
字號:
/* Name: main.c * Project: AVR USB driver for CDC interface on Low-Speed USB * Author: Osamu Tamura * Creation Date: 2006-05-12 * Tabsize: 4 * Copyright: (c) 2006 by Recursion Co., Ltd. * License: Proprietary, free under certain conditions. See Documentation. *
 * 2006-07-08   removed zero-sized receive block
 * 2006-07-08   adapted to higher baud rate by T.Kitazawa
 *
 */#include <avr/io.h>#include <avr/interrupt.h>#include <avr/pgmspace.h>#include <avr/wdt.h>#include "usbdrv.h"#include "oddebug.h"#include "uart.h"enum {    SEND_ENCAPSULATED_COMMAND = 0,    GET_ENCAPSULATED_RESPONSE,    SET_COMM_FEATURE,    GET_COMM_FEATURE,    CLEAR_COMM_FEATURE,    SET_LINE_CODING = 0x20,    GET_LINE_CODING,    SET_CONTROL_LINE_STATE,    SEND_BREAK};char usbDescrConfig[] PROGMEM = {    /* USB configuration descriptor */    9,          /* sizeof(usbDescrConfig): length of descriptor in bytes */    USBDESCR_CONFIG,    /* descriptor type */    USB_CFG_EXTERNAL_CONFIG_DESCRIPTOR_LENGH,    0,          /* total length of data returned (including inlined descriptors) */    2,          /* number of interfaces in this configuration */    1,          /* index of this configuration */    0,          /* configuration name string index */#if USB_CFG_IS_SELF_POWERED    USBATTR_SELFPOWER,  /* attributes */#else    USBATTR_BUSPOWER,   /* attributes */#endif    USB_CFG_MAX_BUS_POWER/2,            /* max USB current in 2mA units */    /* interface descriptor follows inline: */    9,          /* sizeof(usbDescrInterface): length of descriptor in bytes */    USBDESCR_INTERFACE, /* descriptor type */    0,          /* index of this interface */    0,          /* alternate setting for this interface */    USB_CFG_HAVE_INTRIN_ENDPOINT,   /* endpoints excl 0: number of endpoint descriptors to follow */    USB_CFG_INTERFACE_CLASS,    USB_CFG_INTERFACE_SUBCLASS,    USB_CFG_INTERFACE_PROTOCOL,    0,          /* string index for interface */    /* CDC Class-Specific descriptor */    5,           /* sizeof(usbDescrCDC_HeaderFn): length of descriptor in bytes */    0x24,        /* descriptor type */    0,           /* header functional descriptor */    0x10, 0x01,    4,           /* sizeof(usbDescrCDC_AcmFn): length of descriptor in bytes */    0x24,        /* descriptor type */    2,           /* abstract control management functional descriptor */    0x02,        /* SET_LINE_CODING,    GET_LINE_CODING, SET_CONTROL_LINE_STATE    */    5,           /* sizeof(usbDescrCDC_UnionFn): length of descriptor in bytes */    0x24,        /* descriptor type */    6,           /* union functional descriptor */    0,           /* CDC_COMM_INTF_ID */    1,           /* CDC_DATA_INTF_ID */    5,           /* sizeof(usbDescrCDC_CallMgtFn): length of descriptor in bytes */    0x24,        /* descriptor type */    1,           /* call management functional descriptor */    3,           /* allow management on data interface, handles call management by itself */    1,           /* CDC_DATA_INTF_ID */    /* Endpoint Descriptor */    7,           /* sizeof(usbDescrEndpoint) */    USBDESCR_ENDPOINT,  /* descriptor type = endpoint */    0x83,        /* IN endpoint number 3 */    0x03,        /* attrib: Interrupt endpoint */    8, 0,        /* maximum packet size */    100,         /* in ms */    /* Interface Descriptor  */    9,           /* sizeof(usbDescrInterface): length of descriptor in bytes */    4,           /* descriptor type */    1,           /* index of this interface */    0,           /* alternate setting for this interface */    2,           /* endpoints excl 0: number of endpoint descriptors to follow */    0x0A,        /* Data Interface Class Codes */    0,    0,           /* Data Interface Class Protocol Codes */    0,           /* string index for interface */    /* Endpoint Descriptor */    7,           /* sizeof(usbDescrEndpoint) */    USBDESCR_ENDPOINT,  /* descriptor type = endpoint */    0x01,        /* OUT endpoint number 1 */    0x02,        /* attrib: Bulk endpoint */    8, 0,        /* maximum packet size */    0,           /* in ms */    /* Endpoint Descriptor */    7,           /* sizeof(usbDescrEndpoint) */    USBDESCR_ENDPOINT,  /* descriptor type = endpoint */    0x81,        /* IN endpoint number 1 */    0x02,        /* attrib: Bulk endpoint */    8, 0,        /* maximum packet size */    0,           /* in ms */};static uchar        intr3Status;    /* used to control interrupt endpoint transmissions */static uchar        stopbit, parity, databit;static usbDWord_t   baud;static void resetUart(void){    uartInit(baud.dword, parity, stopbit, databit);    irptr    = 0;    iwptr    = 0;    urptr    = 0;    uwptr    = 0;}/* ------------------------------------------------------------------------- *//* ----------------------------- USB interface ----------------------------- *//* ------------------------------------------------------------------------- */uchar usbFunctionSetup(uchar data[8]){usbRequest_t    *rq = (void *)data;    if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_CLASS){    /* class request type */        if( rq->bRequest==GET_LINE_CODING || rq->bRequest==SET_LINE_CODING ){            return 0xff;        /*    GET_LINE_CODING -> usbFunctionRead()    */        /*    SET_LINE_CODING -> usbFunctionWrite()    */        }        if(rq->bRequest == SET_CONTROL_LINE_STATE){            /* Report serial state (carrier detect). On several Unix platforms,             * tty devices can only be opened when carrier detect is set.             */            intr3Status = 2;        }    }    return 0;}/*---------------------------------------------------------------------------*//* usbFunctionRead                                                          *//*---------------------------------------------------------------------------*/uchar usbFunctionRead( uchar *data, uchar len ){    data[0] = baud.bytes[0];    data[1] = baud.bytes[1];    data[2] = baud.bytes[2];
    data[3] = baud.bytes[3];
    data[4] = stopbit;    data[5] = parity;    data[6] = databit;    return 7;}/*---------------------------------------------------------------------------*//* usbFunctionWrite                                                          *//*---------------------------------------------------------------------------*/uchar usbFunctionWrite( uchar *data, uchar len ){    /*    SET_LINE_CODING    */    baud.bytes[0] = data[0];    baud.bytes[1] = data[1];    baud.bytes[2] = data[2];
    baud.bytes[3] = data[3];
#if USB_CFG_HAVE_USART    stopbit    = data[4];    parity     = data[5];    databit    = data[6];    if( parity>2 )        parity    = 0;    if( stopbit==1 )        stopbit    = 0;#endif    resetUart();    return 1;}void usbFunctionWriteOut( uchar *data, uchar len ){    /*    usb -> rs232c:  transmit char    */    usbDisableAllRequests();    for( ; len; len-- ) {        uartTxBufAppend(*data++);    }}static void hardwareInit(void){uchar    i, j;    /* activate pull-ups except on USB lines */    USB_CFG_IOPORT   = (uchar)~((1<<USB_CFG_DMINUS_BIT)|(1<<USB_CFG_DPLUS_BIT));    /* all pins input except USB (-> USB reset) */#ifdef USB_CFG_PULLUP_IOPORT    /* use usbDeviceConnect()/usbDeviceDisconnect() if available */    USBDDR    = 0;    /* we do RESET by deactivating pullup */    usbDeviceDisconnect();#else    USBDDR    = (1<<USB_CFG_DMINUS_BIT)|(1<<USB_CFG_DPLUS_BIT);#endif    j = 0;    while(--j){          /* USB Reset by device only required on Watchdog Reset */        i = 0;        while(--i);      /* delay >10ms for USB reset */    }#ifdef USB_CFG_PULLUP_IOPORT    usbDeviceConnect();#else    USBDDR    = 0;      /*  remove USB reset condition */#endif
    /*    USART configuration    */    baud.dword  = UART_DEFAULT_BPS;    stopbit = 0;    parity  = 0;    databit = 8;    resetUart();}int main(void){
    wdt_enable(WDTO_1S);    odDebugInit();    hardwareInit();
    usbInit();
    sei();    usbSetInterrupt(0, 0);  /* the host eats the first packet -- don't know why... */    for(;;){    /* main event loop */        uchar bytesRead, *data;        wdt_reset();        usbPoll();        uartPoll();        /*    usb -> rs232c:  ready to receive?    */        if( usbAllRequestsAreDisabled() && uartTxBytesFree()>=8 ){            usbEnableAllRequests();        }        /*    rs232c -> usb:  transmit char        */        if( usbInterruptIsReady() && (bytesRead = uartRxBytesAvailable(&data)) > 0) {            /* We limit the transaction size to 7 instead of 8 to indicate that             * this is the last transaction in the transfer. Otherwise the host             * would try to read more transactions which we would answer with NAK             * instead of a terminating zero sized block.             */            if(bytesRead > 7) {
                if(bytesRead == 8)
                    bytesRead = 7;
                else
                    bytesRead = 8;
            }
            usbSetInterrupt(data, bytesRead);            uartRxDidReadBytes(bytesRead);        }
        /* We need to report rx and tx carrier after open attempt */        if(intr3Status != 0 && usbInterruptIsReady3()){            static uchar serialStateNotification[10] = {0xa1, 0x20, 0, 0, 0, 0, 2, 0, 3, 0};            if(intr3Status == 2){                usbSetInterrupt3(serialStateNotification, 8);            }else{                usbSetInterrupt3(serialStateNotification+8, 2);            }            intr3Status--;        }    }    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费网站在线观看| 欧美一二三区在线| 精品亚洲欧美一区| 午夜精品久久久久久久久| 一区二区三区精品久久久| 亚洲青青青在线视频| 中文字幕日本不卡| 亚洲视频你懂的| 亚洲男人都懂的| 亚洲第一电影网| 欧美aⅴ一区二区三区视频| 日韩在线一区二区| 麻豆精品一区二区综合av| 麻豆精品国产91久久久久久| 美女视频一区二区| 国内一区二区视频| 懂色av一区二区夜夜嗨| 成人av资源站| 欧美怡红院视频| 欧美一二三在线| 久久网站最新地址| 国产精品国产三级国产aⅴ入口| 国产精品久久久久久久久免费丝袜 | 爽好久久久欧美精品| 亚洲一区二区免费视频| 亚洲高清免费一级二级三级| 美腿丝袜一区二区三区| 国产.欧美.日韩| 日本韩国欧美一区| 日韩精品一区二区三区老鸭窝| 精品播放一区二区| 国产精品成人一区二区三区夜夜夜 | 久久精品视频在线免费观看| 亚洲国产精华液网站w | 欧美疯狂性受xxxxx喷水图片| 91精品国产综合久久香蕉的特点| 久久人人爽人人爽| 亚洲三级免费观看| 久久国产生活片100| 成人午夜视频免费看| 欧美日韩国产一级片| 久久久蜜桃精品| 丝袜美腿亚洲综合| 成人污污视频在线观看| 欧美精品色综合| 亚洲同性gay激情无套| 青青青爽久久午夜综合久久午夜| 粉嫩蜜臀av国产精品网站| 欧美三级三级三级| 日本一区二区成人在线| 视频精品一区二区| 91蝌蚪porny| 26uuu亚洲婷婷狠狠天堂| 亚洲精品国久久99热| 久久av资源站| 3d动漫精品啪啪一区二区竹菊 | 春色校园综合激情亚洲| 91精品啪在线观看国产60岁| 亚洲欧美自拍偷拍| 成人一级黄色片| 日韩丝袜情趣美女图片| 一区二区国产视频| 国产成人日日夜夜| 日韩欧美一级在线播放| 亚洲综合丁香婷婷六月香| 99麻豆久久久国产精品免费| 国产性做久久久久久| 精品一区二区三区免费播放| 欧美精品第1页| 亚洲制服丝袜一区| 在线一区二区观看| 亚洲裸体xxx| 91视频在线看| 亚洲精品久久久久久国产精华液| 福利一区二区在线| 精品免费日韩av| 激情偷乱视频一区二区三区| 日韩欧美国产小视频| 蜜臀久久99精品久久久久宅男 | 精品一区二区三区在线视频| 欧美人与z0zoxxxx视频| 亚洲成av人片在线观看无码| 欧美性xxxxxx少妇| 亚洲成人午夜影院| 777亚洲妇女| 久久精品国产一区二区| 久久综合九色综合久久久精品综合| 久久国产精品一区二区| 精品裸体舞一区二区三区| 精品中文字幕一区二区| 国产人成一区二区三区影院| 成人精品高清在线| 日韩久久一区二区| 欧美午夜免费电影| 蜜臀av性久久久久av蜜臀妖精 | 国产精品视频一二三区| 99综合电影在线视频| 亚洲主播在线播放| 欧美一级生活片| 国产揄拍国内精品对白| 国产精品三级电影| 在线观看91视频| 九九在线精品视频| 亚洲少妇30p| 91精品欧美综合在线观看最新| 国产在线视频不卡二| 中文字幕一区在线| 欧美一卡二卡三卡四卡| 国产成人午夜精品影院观看视频| 国产精品久久久久久久久免费相片 | 99久久777色| 亚洲图片欧美色图| 国产午夜精品福利| 欧美日韩视频在线一区二区| 国产精选一区二区三区| 夜夜揉揉日日人人青青一国产精品| 日韩一区二区三区四区五区六区| 国产成人免费xxxxxxxx| 一区二区三区 在线观看视频| 欧美一区二区三区四区久久| 不卡免费追剧大全电视剧网站| 午夜视黄欧洲亚洲| 国产精品久久久久一区| 欧美一卡在线观看| 欧洲av在线精品| 国产成人av一区二区三区在线| 亚洲国产综合色| 国产精品欧美一区喷水| 欧美一级在线观看| 欧美色老头old∨ideo| 成人av在线播放网址| 欧美aaaaaa午夜精品| 一级特黄大欧美久久久| 欧美国产激情二区三区| 精品国偷自产国产一区| 欧美吞精做爰啪啪高潮| 成人污视频在线观看| 国产精品一区二区无线| 石原莉奈在线亚洲二区| 亚洲国产精品久久人人爱| 欧美国产丝袜视频| 久久这里只有精品首页| 日韩精品专区在线影院重磅| 欧美日韩在线播| 色8久久人人97超碰香蕉987| 成人av在线资源网站| 成人免费看视频| 成人综合婷婷国产精品久久蜜臀| 国产精品自拍一区| 国产剧情一区二区| 国产激情偷乱视频一区二区三区| 九色综合国产一区二区三区| 老司机午夜精品99久久| 奇米影视在线99精品| 日本不卡一二三| 麻豆国产一区二区| 国产中文一区二区三区| 韩国v欧美v亚洲v日本v| 国产在线一区二区| 成人网在线播放| 91麻豆精东视频| 91浏览器入口在线观看| 在线视频你懂得一区二区三区| 色婷婷精品久久二区二区蜜臂av | 久久国产三级精品| 国产在线国偷精品产拍免费yy| 久久99国产精品久久99果冻传媒| 九九九久久久精品| 成人性色生活片| 色婷婷国产精品综合在线观看| 91视频国产资源| 91国在线观看| 91精品国产入口| 精品国产乱码久久久久久浪潮| 久久无码av三级| 亚洲欧美日韩小说| 亚洲成人动漫一区| 久久国内精品视频| av动漫一区二区| 欧美日韩一区三区| 久久在线免费观看| √…a在线天堂一区| 一区二区三区国产精华| 蜜臀久久久久久久| av不卡在线观看| 91精品国产一区二区| 欧美国产日本视频| 亚洲午夜一区二区三区| 国产尤物一区二区| 欧美亚洲国产一区二区三区 | 1024精品合集| 美脚の诱脚舐め脚责91| 高清av一区二区| 8x8x8国产精品| 成人欧美一区二区三区| 久久99国产乱子伦精品免费| 91亚洲永久精品| 久久亚洲一级片| 欧美aaa在线| jlzzjlzz亚洲日本少妇|