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

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

?? usb_drv.h

?? avr USBusbdemoavr USBusbdemo
?? H
?? 第 1 頁 / 共 3 頁
字號:
//! @file usb_drv.h,v
//!
//! Copyright (c) 2006 Atmel.
//!
//! Use of this program is subject to Atmel's End User License Agreement.
//! Please read file license.txt for copyright notice.
//!
//! @brief This file contains the USB low level driver definition
//!
//! @version 1.34 at90usb128-demo-cdc-1_0_3 $Id: usb_drv.h,v 1.34 2006/07/27 07:03:41 rletendu Exp $
//!
//! @todo
//! @bug


#ifndef _USB_DRV_H_
#define _USB_DRV_H_

//_____ I N C L U D E S ____________________________________________________


typedef enum endpoint_parameter{ep_num, ep_type, ep_direction, ep_size, ep_bank, nyet_status} t_endpoint_parameter;

//! @defgroup USB_low_level_drivers USB low level drivers module
//! USB low level drivers Module
//! @{

//_____ M A C R O S ________________________________________________________

#define MAX_EP_NB             7

#define EP_CONTROL            0
#define EP_1                  1
#define EP_2                  2
#define EP_3                  3
#define EP_4                  4
#define EP_5                  5
#define EP_6                  6
#define EP_7                  7

#define PIPE_CONTROL          0
#define PIPE_0                0
#define PIPE_1                1
#define PIPE_2                2
#define PIPE_3                3
#define PIPE_4                4
#define PIPE_5                5
#define PIPE_6                6
#define PIPE_7                7

// USB EndPoint
#define MSK_EP_DIR            0x7F
#define MSK_UADD              0x7F
#define MSK_EPTYPE            0xC0
#define MSK_EPSIZE            0x70
#define MSK_EPBK              0x0C
#define MSK_DTSEQ             0x0C
#define MSK_NBUSYBK           0x03
#define MSK_CURRBK            0x03
#define MSK_DAT               0xFF  // UEDATX
#define MSK_BYCTH             0x07  // UEBCHX
#define MSK_BYCTL             0xFF  // UEBCLX
#define MSK_EPINT             0x7F  // UEINT
#define MSK_HADDR             0xFF  // UHADDR

// USB Pipe
#define MSK_PNUM              0x07  // UPNUM
#define MSK_PRST              0x7F  // UPRST
#define MSK_PTYPE             0xC0  // UPCFG0X
#define MSK_PTOKEN            0x30
#define MSK_PEPNUM            0x0F
#define MSK_PSIZE             0x70  // UPCFG1X
#define MSK_PBK               0x0C

#define MSK_NBUSYBK           0x03

#define MSK_ERROR             0x1F

#define MSK_PTYPE             0xC0  // UPCFG0X
#define MSK_PTOKEN            0x30
#define MSK_TOKEN_SETUP       0x30
#define MSK_TOKEN_IN          0x10
#define MSK_TOKEN_OUT         0x20
#define MSK_PEPNUM            0x0F

#define MSK_PSIZE             0x70  // UPCFG1X
#define MSK_PBK               0x0C


// Parameters for endpoint configuration
// These define are the values used to enable and configure an endpoint.
#define TYPE_CONTROL             0
#define TYPE_ISOCHRONOUS         1
#define TYPE_BULK                2
#define TYPE_INTERRUPT           3
 //typedef enum ep_type {TYPE_CONTROL, TYPE_BULK, TYPE_ISOCHRONOUS, TYPE_INTERRUPT} e_ep_type;

#define DIRECTION_OUT            0
#define DIRECTION_IN             1
 //typedef enum ep_dir {DIRECTION_OUT, DIRECTION_IN} e_ep_dir;

#define SIZE_8                   0
#define SIZE_16                  1
#define SIZE_32                  2
#define SIZE_64                  3
#define SIZE_128                 4
#define SIZE_256                 5
#define SIZE_512                 6
#define SIZE_1024                7
 //typedef enum ep_size {SIZE_8,   SIZE_16,  SIZE_32,  SIZE_64,
 //                      SIZE_128, SIZE_256, SIZE_512, SIZE_1024} e_ep_size;

#define ONE_BANK                 0
#define TWO_BANKS                1
 //typedef enum ep_bank {ONE_BANK, TWO_BANKS} e_ep_bank;

#define NYET_ENABLED             0
#define NYET_DISABLED            1
 //typedef enum ep_nyet {NYET_DISABLED, NYET_ENABLED} e_ep_nyet;

#define TOKEN_SETUP              0
#define TOKEN_IN                 1
#define TOKEN_OUT                2

#define Is_ep_addr_in(x)         (  (x&0x80)?   TRUE : FALSE)


//! @defgroup Endpoints_configuration Configuration macros for endpoints
//! List of the standard macro used to configure pipes and endpoints
//! @{
#define Usb_build_ep_config0(type, dir, nyet)     ((type<<6) | (nyet<<1) | (dir))
#define Usb_build_ep_config1(size, bank     )     ((size<<4) | (bank<<2)        )
#define usb_configure_endpoint(num, type, dir, size, bank, nyet)             \
                                    ( Usb_select_endpoint(num),              \
                                      usb_config_ep(Usb_build_ep_config0(type, dir, nyet),\
                                                    Usb_build_ep_config1(size, bank)    ))

#define Host_build_pipe_config0(type, token, ep_num)     ((type<<6) | (token<<4) | (ep_num))
#define Host_build_pipe_config1(size, bank     )         ((size<<4) | (bank<<2)        )
#define host_configure_pipe(num, type, token,ep_num, size, bank, freq)             \
                                    ( Host_select_pipe(num),              \
                                      Host_set_interrupt_frequency(freq), \
                                      host_config_pipe(Host_build_pipe_config0(type, token, ep_num),\
                                                       Host_build_pipe_config1(size, bank)    ))
//! @}

//! @defgroup USB_regulator USB Pads Regulator drivers
//! Turns ON/OFF USB pads regulator
//! @{
   //! Enable internal USB pads regulator
#define Usb_enable_regulator()          (UHWCON |= (1<<UVREGE))
   //! Disable internal USB pads regulator
#define Usb_disable_regulator()         (UHWCON &= ~(1<<UVREGE))
   //! Check regulator enable bit
#define Is_usb_regulator_enabled()      ((UHWCON &  (1<<UVREGE))  ? TRUE : FALSE)
//! @}

//! @defgroup gen_usb USB common management drivers
//! These macros manage the USB controller
//! @{
   //! Enable external UID pin
#define Usb_enable_uid_pin()            (UHWCON |= (1<<UIDE))
   //! Disable external UID pin
#define Usb_disable_uid_pin()           (UHWCON &= ~(1<<UIDE))
   //! Disable external UID pin and force device mode
#define Usb_force_device_mode()         (Usb_disable_uid_pin(), UHWCON |= (1<<UIMOD))
   //! Disable external UID pin and force host mode
#define Usb_force_host_mode()           (Usb_disable_uid_pin(), UHWCON &= ~(1<<UIMOD))
   //! Enable external UVCON pin
#define Usb_enable_uvcon_pin()          (UHWCON |= (1<<UVCONE))
   //! Enable external UVCON pin
#define Usb_disable_uvcon_pin()         (UHWCON &= ~(1<<UVCONE))
   //! Use device full speed mode (default mode)
#define Usb_full_speed_mode()           (UDCON &= ~(1<<LSM))
   //! For device mode, force low speed mode
#define Usb_low_speed_mode()            (UDCON |= (1<<LSM))

   //! Enable both USB interface and Vbus pad
#define Usb_enable()                  (USBCON |= ((1<<USBE) | (1<<OTGPADE)))
   //! Disable both USB interface and Vbus pad
#define Usb_disable()                 (USBCON &= ~((1<<USBE) | (1<<OTGPADE)))
#define Is_usb_enabled()              ((USBCON  &   (1<<USBE))   ? TRUE : FALSE)

   //! Enable VBUS pad
#define Usb_enable_vbus_pad()         (USBCON |= (1<<OTGPADE))
   //! Disable VBUS pad
#define Usb_disable_vbus_pad()        (USBCON &= ~(1<<OTGPADE))

#define Usb_select_device()           (USBCON  &= ~(1<<HOST))
#define Usb_select_host()             (USBCON  |=  (1<<HOST))
#define Is_usb_host_enabled()         ((USBCON  &   (1<<HOST))   ? TRUE : FALSE)

   //! Stop internal USB clock in interface (freeze the interface register)
#define Usb_freeze_clock()            (USBCON  |=  (1<<FRZCLK))
#define Usb_unfreeze_clock()          (USBCON  &= ~(1<<FRZCLK))
#define Is_usb_clock_freezed()        ((USBCON  &   (1<<FRZCLK)) ? TRUE : FALSE)

#define Usb_enable_id_interrupt()     (USBCON  |=  (1<<IDTE))
#define Usb_disable_id_interrupt()    (USBCON  &= ~(1<<IDTE))
#define Is_usb_id_interrupt_enabled() ((USBCON &  (1<<IDTE))     ? TRUE : FALSE)
#define Is_usb_id_device()            ((USBSTA &   (1<<ID))      ? TRUE : FALSE)
#define Usb_ack_id_transition()       (USBINT  = ~(1<<IDTI))
#define Is_usb_id_transition()        ((USBINT &   (1<<IDTI))    ? TRUE : FALSE)

#define Usb_enable_vbus_interrupt()   (USBCON  |=  (1<<VBUSTE))
#define Usb_disable_vbus_interrupt()  (USBCON  &= ~(1<<VBUSTE))
#define Is_usb_vbus_interrupt_enabled() ((USBCON &  (1<<VBUSTE))     ? TRUE : FALSE)
#define Is_usb_vbus_high()            ((USBSTA &   (1<<VBUS))    ? TRUE : FALSE)
#define Is_usb_vbus_low()             ((USBSTA &   (1<<VBUS))    ? FALSE : TRUE)
#define Usb_ack_vbus_transition()     (USBINT  = ~(1<<VBUSTI))
#define Is_usb_vbus_transition()      ((USBINT &   (1<<VBUSTI))  ? TRUE : FALSE)

   //! returns the USB general interrupts (interrupt enabled)
#define Usb_get_general_interrupt()      (USBINT & (USBCON & MSK_IDTE_VBUSTE))
   //! acks the general interrupts (interrupt enabled)
#define Usb_ack_all_general_interrupt()  (USBINT = ~(USBCON & MSK_IDTE_VBUSTE))
#define Usb_ack_cache_id_transition(x)   ((x)  &= ~(1<<IDTI))
#define Usb_ack_cache_vbus_transition(x) ((x)  &= ~(1<<VBUSTI))
#define Is_usb_cache_id_transition(x)    (((x) &   (1<<IDTI))  )
#define Is_usb_cache_vbus_transition(x)  (((x) &   (1<<VBUSTI)))

   //! returns the USB Pad interrupts (interrupt enabled)
#define Usb_get_otg_interrupt()            (OTGINT & OTGIEN)
   //! acks the USB Pad interrupts (interrupt enabled)
#define Usb_ack_all_otg_interrupt()        (OTGINT = ~OTGIEN)
#define Is_otg_cache_bconnection_error(x)  (((x) &   MSK_BCERRI))
#define Usb_ack_cache_bconnection_error(x) ((x)  &= ~MSK_BCERRI)

#define Usb_enter_dpram_mode()        (UDPADDH =  (1<<DPACC))
#define Usb_exit_dpram_mode()         (UDPADDH =  (U8)~(1<<DPACC))
#define Usb_set_dpram_address(addr)   (UDPADDH =  (1<<DPACC) + ((Uint16)addr >> 8), UDPADDL = (Uchar)addr)
#define Usb_write_dpram_byte(val)     (UEDATX=val)
#define Usb_read_dpram_byte()			  (UEDATX)

   //! requests for VBus activation
#define Usb_enable_vbus()             (OTGCON  |=  (1<<VBUSREQ))
   //! requests for VBus desactivation
#define Usb_disable_vbus()            (OTGCON  |=  (1<<VBUSRQC))
   //! Manually request VBUS without UVCON signal from USB interface
#define Usb_enable_manual_vbus()      (PORTE|=0x80,DDRE|=0x80,Usb_disable_uvcon_pin())

   //! initiates a Host Negociation Protocol
#define Usb_device_initiate_hnp()     (OTGCON  |=  (1<<HNPREQ))
   //! accepts a Host Negociation Protocol
#define Usb_host_accept_hnp()         (OTGCON  |=  (1<<HNPREQ))
   //! rejects a Host Negociation Protocol
#define Usb_host_reject_hnp()         (OTGCON  &= ~(1<<HNPREQ))
   //! initiates a Session Request Protocol
#define Usb_device_initiate_srp()     (OTGCON  |=  (1<<SRPREQ))
   //! selects VBus as SRP method
#define Usb_select_vbus_srp_method()  (OTGCON  |=  (1<<SRPSEL))
   //! selects data line as SRP method
#define Usb_select_data_srp_method()  (OTGCON  &= ~(1<<SRPSEL))
   //! enables hardware control on VBus
#define Usb_enable_vbus_hw_control()  (OTGCON  &= ~(1<<VBUSHWC))
   //! disables hardware control on VBus
#define Usb_disable_vbus_hw_control() (OTGCON  |=  (1<<VBUSHWC))
   //! tests if VBus has been requested
#define Is_usb_vbus_enabled()         ((OTGCON &   (1<<VBUSREQ)) ? TRUE : FALSE)
   //! tests if a HNP occurs
#define Is_usb_hnp()                  ((OTGCON &   (1<<HNPREQ))  ? TRUE : FALSE)
   //! tests if a SRP from device occurs
#define Is_usb_device_srp()           ((OTGCON &   (1<<SRPREQ))  ? TRUE : FALSE)

   //! enables suspend time out interrupt
#define Usb_enable_suspend_time_out_interrupt()   (OTGIEN  |=  (1<<STOE))
   //! disables suspend time out interrupt
#define Usb_disable_suspend_time_out_interrupt()  (OTGIEN  &= ~(1<<STOE))
#define Is_suspend_time_out_interrupt_enabled()   ((OTGIEN &  (1<<STOE))   ? TRUE : FALSE)
   //! acks suspend time out interrupt
#define Usb_ack_suspend_time_out_interrupt()      (OTGINT  &= ~(1<<STOI))
   //! tests if a suspend time out occurs
#define Is_usb_suspend_time_out_interrupt()       ((OTGINT &   (1<<STOI))    ? TRUE : FALSE)

   //! enables HNP error interrupt
#define Usb_enable_hnp_error_interrupt()          (OTGIEN  |=  (1<<HNPERRE))
   //! disables HNP error interrupt
#define Usb_disable_hnp_error_interrupt()         (OTGIEN  &= ~(1<<HNPERRE))
#define Is_hnp_error_interrupt_enabled()          ((OTGIEN &  (1<<HNPERRE))   ? TRUE : FALSE)
   //! acks HNP error interrupt
#define Usb_ack_hnp_error_interrupt()             (OTGINT  &= ~(1<<HNPERRI))
   //! tests if a HNP error occurs
#define Is_usb_hnp_error_interrupt()              ((OTGINT &   (1<<HNPERRI)) ? TRUE : FALSE)

   //! enables role exchange interrupt
#define Usb_enable_role_exchange_interrupt()      (OTGIEN  |=  (1<<ROLEEXE))
   //! disables role exchange interrupt
#define Usb_disable_role_exchange_interrupt()     (OTGIEN  &= ~(1<<ROLEEXE))
#define Is_role_exchange_interrupt_enabled()      ((OTGIEN &  (1<<ROLEEXE))   ? TRUE : FALSE)
   //! acks role exchange interrupt
#define Usb_ack_role_exchange_interrupt()         (OTGINT  &= ~(1<<ROLEEXI))
   //! tests if a role exchange occurs
#define Is_usb_role_exchange_interrupt()          ((OTGINT &   (1<<ROLEEXI)) ? TRUE : FALSE)

   //! enables B device connection error interrupt
#define Usb_enable_bconnection_error_interrupt()  (OTGIEN  |=  (1<<BCERRE))
   //! disables B device connection error interrupt
#define Usb_disable_bconnection_error_interrupt() (OTGIEN  &= ~(1<<BCERRE))
#define Is_bconnection_error_interrupt_enabled()  ((OTGIEN &  (1<<BCERRE))   ? TRUE : FALSE)
   //! acks B device connection error interrupt

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看不卡一区| 极品美女销魂一区二区三区| 成人黄色一级视频| 久久香蕉国产线看观看99| 狠狠色狠狠色综合系列| 国产三级欧美三级日产三级99 | 久久er精品视频| 精品久久久久香蕉网| 韩日精品视频一区| 中文一区二区完整视频在线观看 | 9人人澡人人爽人人精品| 午夜精品一区二区三区免费视频| 91麻豆产精品久久久久久| 国产伦精品一区二区三区视频青涩| 国产精品国产三级国产有无不卡 | av在线这里只有精品| 日本欧美一区二区三区乱码| av激情亚洲男人天堂| 激情图片小说一区| 国产精品一区二区三区四区| 日本午夜精品一区二区三区电影| 风间由美一区二区三区在线观看| 中文字幕日韩一区| 91久久精品国产91性色tv| 首页国产欧美久久| 久久久精品一品道一区| av影院午夜一区| 亚洲va欧美va人人爽| 精品久久五月天| 91久久久免费一区二区| 麻豆精品国产91久久久久久| 国产日韩欧美精品在线| 在线看不卡av| 国产精品1区2区3区在线观看| 久久精品国产免费| 日韩理论在线观看| 日韩精品一区二区三区蜜臀| av高清不卡在线| 美女久久久精品| 亚洲欧美激情插 | 欧美性色aⅴ视频一区日韩精品| 九色综合狠狠综合久久| 成人欧美一区二区三区黑人麻豆| 制服丝袜激情欧洲亚洲| 成人a免费在线看| 久久99久久99精品免视看婷婷| 亚洲精品免费在线观看| 久久亚洲综合色| 91精品国产aⅴ一区二区| 91视频com| 国产成人综合在线| 日产欧产美韩系列久久99| 亚洲少妇30p| 日本一区二区视频在线| 精品捆绑美女sm三区| 欧美精品aⅴ在线视频| 91免费视频观看| 国产成人精品免费一区二区| 免费在线看一区| 一区二区日韩电影| 国产精品理论片| 久久久精品2019中文字幕之3| 欧美一区二区三区在线视频| 欧美在线视频全部完| 不卡一区在线观看| 国产福利一区二区三区| 精品伊人久久久久7777人| 日韩在线a电影| 亚洲一区精品在线| 一区二区在线观看av| 国产精品福利影院| 国产精品午夜电影| 日本一区二区三区四区| 26uuu欧美| 精品国产乱码久久久久久1区2区| 欧美高清hd18日本| 欧美老年两性高潮| 制服丝袜亚洲播放| 日韩欧美自拍偷拍| 精品久久国产字幕高潮| 日韩精品资源二区在线| 日韩欧美国产成人一区二区| 日韩欧美国产综合一区| 在线电影欧美成精品| 8v天堂国产在线一区二区| 8v天堂国产在线一区二区| 69精品人人人人| 日韩欧美资源站| 久久日韩粉嫩一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 国产蜜臀av在线一区二区三区| 久久综合九色综合欧美亚洲| 久久亚洲一区二区三区明星换脸 | 色综合久久久久综合体桃花网| 91麻豆国产在线观看| 欧洲国内综合视频| 欧美天堂一区二区三区| 欧美电影在线免费观看| 欧美一二三区在线观看| 久久久久久久久久久99999| 国产精品女上位| 亚洲一区在线视频| 日韩国产高清在线| 国产美女视频一区| 97久久精品人人做人人爽50路| 欧美性感一区二区三区| 欧美美女黄视频| 久久免费美女视频| 亚洲天堂网中文字| 日韩av电影免费观看高清完整版在线观看| 美国十次综合导航| 懂色av一区二区三区蜜臀| 91福利视频在线| 日韩欧美国产wwwww| 国产精品美女久久久久aⅴ | 91精品久久久久久久久99蜜臂| 欧美电影免费观看高清完整版| 中文在线资源观看网站视频免费不卡| 一区二区在线观看视频| 精品伊人久久久久7777人| 99久久婷婷国产| 日韩一区二区精品在线观看| 欧美国产欧美综合| 视频一区视频二区中文字幕| 国产精品一区二区三区99| 欧美中文字幕亚洲一区二区va在线| 日韩精品一区二区在线| 亚洲女女做受ⅹxx高潮| 精品一区二区三区视频在线观看| 99久久精品国产导航| 欧美电影免费观看高清完整版在| 最好看的中文字幕久久| 国内精品久久久久影院色| 色综合视频一区二区三区高清| 精品国免费一区二区三区| 夜夜精品浪潮av一区二区三区| 韩国成人在线视频| 欧美视频中文字幕| 日韩美女视频一区| 国产精品伊人色| 欧美一区二区成人| 亚洲黄一区二区三区| 成人免费看片app下载| 欧美mv日韩mv| 午夜视频一区在线观看| 91蜜桃在线免费视频| 国产视频一区不卡| 黑人巨大精品欧美黑白配亚洲| 欧美精选一区二区| 亚洲猫色日本管| 成人av在线影院| 久久―日本道色综合久久| 麻豆国产一区二区| 91精品国产91久久综合桃花 | 久久精品免费看| 欧美日韩国产乱码电影| 亚洲日本护士毛茸茸| 欧美色精品在线视频| 亚洲色图都市小说| 成人午夜碰碰视频| 国产精品视频免费看| 国产精品一区二区在线观看不卡 | 国产精品亚洲第一区在线暖暖韩国| 欧美精品丝袜中出| 午夜精品123| 欧美亚洲另类激情小说| 一区二区国产盗摄色噜噜| 99这里只有久久精品视频| 欧美激情一区二区三区四区| 国产成人午夜视频| 久久久久久久久久美女| 国产成人亚洲综合色影视| 久久精品水蜜桃av综合天堂| 国产综合色在线| 久久精品免费在线观看| 国产精品亚洲а∨天堂免在线| 久久亚洲精华国产精华液| 国产精品 欧美精品| 国产喂奶挤奶一区二区三区| 国产成人在线免费| 国产欧美va欧美不卡在线| 成人涩涩免费视频| 亚洲人精品午夜| 欧美日韩国产片| 久久精品国产澳门| 国产日韩影视精品| 色婷婷精品久久二区二区蜜臂av| 亚洲欧美激情小说另类| 欧美日韩黄视频| 六月丁香综合在线视频| 久久久久久一级片| caoporm超碰国产精品| 一区二区三区精品在线| 欧美狂野另类xxxxoooo| 国产一区二区三区免费| 国产精品传媒视频| 91福利在线播放| 蜜臂av日日欢夜夜爽一区| 国产偷v国产偷v亚洲高清| 91久久奴性调教|