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

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

?? stm32f_usb.h

?? STM32F RFID通訊源代碼(支持雙向發送接收)
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2007
 *
 *    File name   : STM32F_usb.h
 *    Description : usb module header file
 *
 *    History :
 *    1. Date        : April 30, 2007
 *       Author      : Stanimir Bonev
 *       Description : Create
 *
 *    $Revision: 1.2.2.4 $
 **************************************************************************/

#include "includes.h"
#include "usb_9.h"

#ifndef __STM32F_USB_H
#define __STM32F_USB_H

#ifdef HAL_USB_GLOBAL
#define HAL_USB_EXTERN
#else
#define HAL_USB_EXTERN  extern
#endif

#define MSG_FILE stdout

#if USB_TRACE_LM_EN != 0
#define  USB_LM_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_LM_TRACE_INFO(...)
#endif

#if USB_TRACE_LW_EN != 0
#define  USB_LW_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_LW_TRACE_INFO(...)
#endif

#if USB_TRACE_LE_EN != 0
#define  USB_LE_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_LE_TRACE_INFO(...)
#endif

#if USB_TRACE_T9M_EN != 0
#define  USB_T9M_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_T9M_TRACE_INFO(...)
#endif

#if USB_TRACE_T9W_EN != 0
#define  USB_T9W_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_T9W_TRACE_INFO(...)
#endif

#if USB_TRACE_T9E_EN != 0
#define  USB_T9E_TRACE_INFO(...)   fprintf(MSG_FILE,  __VA_ARGS__)
#else
#define  USB_T9E_TRACE_INFO(...)
#endif

#include "io_macros.h"

/* USB Control Register (USB_CNTR) */
typedef struct {
  __REG16  FRES           : 1;
  __REG16  PDWN           : 1;
  __REG16  LPMODE         : 1;
  __REG16  FSUSP          : 1;
  __REG16  RESUME         : 1;
  __REG16                 : 3;
  __REG16  ESOFM          : 1;
  __REG16  SOFM           : 1;
  __REG16  RESETM         : 1;
  __REG16  SUSPM          : 1;
  __REG16  WKUPM          : 1;
  __REG16  ERRM           : 1;
  __REG16  DOVRM          : 1;
  __REG16  CTRM           : 1;
} __usb_cntr_bits;

/* USB Interrupt Status Register (USB_ISTR) */
typedef struct {
  __REG16  EP_ID          : 4;
  __REG16  DIR            : 1;
  __REG16                 : 3;
  __REG16  ESOF           : 1;
  __REG16  SOF            : 1;
  __REG16  RESET          : 1;
  __REG16  SUSP           : 1;
  __REG16  WKUP           : 1;
  __REG16  ERR            : 1;
  __REG16  DOVR           : 1;
  __REG16  CTR            : 1;
} __usb_st_bits;

/* USB Frame Number Register (USB_FNR) */
typedef struct {
  __REG16  FN             :11;
  __REG16  LSOF           : 2;
  __REG16  LCK            : 1;
  __REG16  RXDM           : 1;
  __REG16  RXDP           : 1;
} __usb_fnr_bits;

/* USB Device Address (USB_DADDR) */
typedef struct {
  __REG16  ADD            : 7;
  __REG16  EF             : 1;
  __REG16                 : 8;
} __usb_daddr_bits;

/* USB Endpoint n Register (USB_EPnR) */
typedef struct {
  __REG16  EA             : 4;
  __REG16  STATTX         : 2;
  __REG16  DTOGTX         : 1;
  __REG16  CTRTX          : 1;
  __REG16  EPKIND         : 1;
  __REG16  EPTYPE         : 2;
  __REG16  SETUP          : 1;
  __REG16  STATRX         : 2;
  __REG16  DTOGRX         : 1;
  __REG16  CTRRX          : 1;
} __usb_epr_bits;

/***************************************************************************
 **
 **  USB
 **
 ***************************************************************************/
__IO_REG16_BIT(USB_EP0R,              0x40005C00,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP1R,              0x40005C04,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP2R,              0x40005C08,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP3R,              0x40005C0C,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP4R,              0x40005C10,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP5R,              0x40005C14,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP6R,              0x40005C18,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_EP7R,              0x40005C1C,__READ_WRITE,__usb_epr_bits);
__IO_REG16_BIT(USB_CNTR,              0x40005C40,__READ_WRITE,__usb_cntr_bits);
__IO_REG16_BIT(USB_ISTR,              0x40005C44,__READ_WRITE,__usb_st_bits);
__IO_REG16_BIT(USB_FNR,               0x40005C48,__READ      ,__usb_fnr_bits);
__IO_REG16_BIT(USB_DADDR,             0x40005C4C,__READ_WRITE,__usb_daddr_bits);
__IO_REG16(    USB_BTABLE,            0x40005C50,__READ_WRITE);

#define AddrTxOffset    0
#define CountTxOffset   2
#define AddrRxOffset    4
#define CountRxOffset   6

#define USB_RESUME_DLY  8

#define USB_OffsetOfDBT (((Int32U)__segment_size("USB_PACKET_MEMORY")/2) - (sizeof(USB_BuffDeskTbl_t) * (MaxIndOfRealizeEp+1)) & ~7)

#define __Offset2Addr_PackMem(Offset) ((Int32U)__segment_begin("USB_PACKET_MEMORY") + ((Offset<<1) & ~3) + (Offset&1))

#define ReadEpDTB(Slot,Offset)  (*((pInt16U)(__Offset2Addr_PackMem((USB_OffsetOfDBT + (Slot)*sizeof(USB_BuffDeskTbl_t)  + (Offset))))))
#define WriteEpDTB(Slot,Offset,Data)  (ReadEpDTB(Slot,Offset) = Data)

#define ReadEpDTB_AddrRx(Slot)  ReadEpDTB(Slot,AddrRxOffset)
#define ReadEpDTB_CountRx(Slot) ReadEpDTB(Slot,CountRxOffset)
#define ReadEpDTB_AddrTx(Slot)  ReadEpDTB(Slot,AddrTxOffset)
#define ReadEpDTB_CountTx(Slot) ReadEpDTB(Slot,CountTxOffset)

#define WriteEpDTB_AddrRx(Slot,Data)  WriteEpDTB(Slot,AddrRxOffset,Data)
#define WriteEpDTB_CountRx(Slot,Data) WriteEpDTB(Slot,CountRxOffset,Data)
#define WriteEpDTB_AddrTx(Slot,Data)  WriteEpDTB(Slot,AddrTxOffset,Data)
#define WriteEpDTB_CountTx(Slot,Data) WriteEpDTB(Slot,CountTxOffset,Data)

#define USB_CTRL_RW_MASK          0x070F
#define USB_CTRL_CLEAR_ONLY_MASK  0x8080
#define USB_CTRL_TOGGLE_MASK      0x7070

typedef enum _USB_PacketType_t
{
	// Packet type parameters
  UsbSetupPacket = 0,UsbDataOutPacket,UsbDataInPacket,UsbDmaPacket,
} USB_PacketType_t;

typedef enum _USB_ErrorCodes_t
{
  USB_OK = 0,USB_PLL_ERROR, USB_INTR_ERROR,
  USB_EP_OCCUPIER, USB_MEMORY_FULL, USB_BUF_OVERFLOW,
  USB_EP_NOT_VALID, UB_EP_SETUP_UNDERRUN, USB_EP_STALLED,
  UB_EP_SETUP_OVERWRITE, USB_EP_FATAL_ERROR,
} USB_ErrorCodes_t;

typedef enum _EpType_t
{
  EP_BULK_SING_BUFF = 0, EP_CTRL, EP_ISO,
  EP_INTERRUPT, EP_BULK_DOUB_BUF,
} EpType_t;

typedef enum _EpSlot_t
{
  EP_SLOT0 = 0, EP_SLOT1, EP_SLOT2, EP_SLOT3, EP_SLOT4,
  EP_SLOT5, EP_SLOT6, EP_SLOT7, EP_MAX_SLOTS
} EpSlot_t;

typedef enum _EpState_t
{
  EP_DISABLED = 0, EP_STALL, EP_NAK, EP_VALID
} EpState_t;

typedef enum _USB_Endpoint_t
{
  CTRL_ENP_OUT=0, CTRL_ENP_IN,
  ENP1_OUT      , ENP1_IN    ,
  ENP2_OUT      , ENP2_IN    ,
  ENP3_OUT      , ENP3_IN    ,
  ENP4_OUT      , ENP4_IN    ,
  ENP5_OUT      , ENP5_IN    ,
  ENP6_OUT      , ENP6_IN    ,
  ENP7_OUT      , ENP7_IN    ,
  ENP8_OUT      , ENP8_IN    ,
  ENP9_OUT      , ENP9_IN    ,
  ENP10_OUT     , ENP10_IN   ,
  ENP11_OUT     , ENP11_IN   ,
  ENP12_OUT     , ENP12_IN   ,
  ENP13_OUT     , ENP13_IN   ,
  ENP14_OUT     , ENP14_IN   ,
  ENP15_OUT     , ENP15_IN   ,
  ENP_MAX_NUMB
} USB_Endpoint_t;

typedef enum _UsbUserEvent_t
{
  UsbEp0Out = 0 , UsbEp0In,
  UsbEp1Out     , UsbEp1In,
  UsbEp2Out     , UsbEp2In,
  UsbEp3Out     , UsbEp3In,
  UsbEp4Out     , UsbEp4In,
  UsbEp5Out     , UsbEp5In,
  UsbEp6Out     , UsbEp6In,
  UsbEp7Out     , UsbEp7In,
  UsbEp8Out     , UsbEp8In,
  UsbEp9Out     , UsbEp9In,
  UsbEp10Out    , UsbEp10In,
  UsbEp11Out    , UsbEp11In,
  UsbEp12Out    , UsbEp12In,
  UsbEp13Out    , UsbEp13In,
  UsbEp14Out    , UsbEp14In,
  UsbEp15Out    , UsbEp15In,
  UsbClassEp0OutPacket,
  UsbVendorEp0OutPacket,
  UsbUserSofEvent,
  UsbUserClass,
  UsbUserVendor,
  UsbUserGetDescriptor,
  UsbUserConfigure,
  UsbUserReset,
  UsbUserConnect,
  UsbUserSuspend,
  UsbUserEpStall,
  UsbUserEpUnStall,
  UsbLastEvent,
}UsbUserEvent_t;

typedef enum _USB_DevStatusReqType_t
{
  USB_DevConnectStatus = 0, USB_SuspendStatus, USB_ResetStatus
} USB_DevStatusReqType_t;

typedef enum _UsbResumeEvent_t
{
  USB_RESUME_SOF_EVENT = 0, USB_RESUME_SOFT_EVENT,
  USB_RESUME_WAKE_UP_EVENT,
} UsbResumeEvent_t, *pUsbResumeEvent_t;

typedef union _RxCount_t
{
  Int16U Count;
  struct
  {
    Int16U CountField     : 10;
    Int16U NubBlockField  :  5;
    Int16U BlSizeField    :  1;
  };
} RxCount_t, *pRxCount_t;

typedef struct _PacketMemUse_t
{
  USB_Endpoint_t RpAddr;
  Int16U         Start;
  Int16U         Size;
  struct _PacketMemUse_t * pNext;
} PacketMemUse_t, *pPacketMemUse_t;

typedef struct _EpInfo_t
{
  volatile pInt32U    pEpCtrl;
           EpSlot_t   EpSlot;
           Int32U     MaxSize;
           EpType_t   EpType;
           Int32U     EpIntrFl;
} EpInfo_t, *pEpInfo_t;

#pragma pack(1)
typedef struct _USB_BuffDeskTbl_t
{
  Int16U    AddrTx;
  Int16U    CountTx;
  Int16U    AddrRx;
  RxCount_t CountRx;
} USB_BuffDeskTbl_t, *pUSB_BuffDeskTbl_t;
#pragma pack()

typedef union _pIntrStatus_t
{
  Int32U Status;
  struct {
    Int32U EP_ID  : 4;
    Int32U DIR    : 1;
    Int32U        : 2;
    Int32U SZDPR  : 1;
    Int32U ESOF   : 1;
    Int32U SOF    : 1;
    Int32U RESET  : 1;
    Int32U SUSP   : 1;
    Int32U WKUP   : 1;
    Int32U ERR    : 1;
    Int32U DOVR   : 1;
    Int32U CTR    : 1;
    Int32U        :16;
  };
} IntrStatus_t, *pIntrStatus_t;

typedef Int32U UsbDefStatus_t;
typedef void * (* UserFunc_t)(void * Arg);

#define bmCTRM                      0x8000
#define bmDOVRM                     0x4000
#define bmERRM                      0x2000
#define bmWKUPM                     0x1000
#define bmSUSPM                     0x0800
#define bmRESETM                    0x0400
#define bmSOFM                      0x0200
#define bmESOFM                     0x0100

/*************************************************************************
 * Function Name: EpCtrlSet_EA
 * Parameters: volatile pInt32U pReg, Int32U Data
 *
 * Return: none
 *
 * Description: Set EP Addr
 *
 *************************************************************************/
void EpCtrlSet_EA(volatile pInt32U pReg, Int32U Data);

/*************************************************************************
 * Function Name: EpCtrlGet_EA
 * Parameters: volatile pInt32U pReg
 *
 * Return: Int16U
 *
 * Description: Get EP Addr
 *
 *************************************************************************/
inline
Int16U EpCtrlGet_EA(volatile pInt32U pReg);

/*************************************************************************
 * Function Name: EpCtrlSet_STAT_TX
 * Parameters: volatile pInt32U pReg, EpState_t Data
 *
 * Return: none
 *
 * Description: Set EP IN State
 *
 *************************************************************************/
void EpCtrlSet_STAT_TX (volatile pInt32U pReg, EpState_t Data);

/*************************************************************************
 * Function Name: EpCtrlGet_STAT_TX
 * Parameters: volatile pInt32U pReg
 *
 * Return: Int32U
 *
 * Description: Get EP IN Status
 *
 *************************************************************************/
inline
Int32U EpCtrlGet_STAT_TX (volatile pInt32U pReg);

/*************************************************************************
 * Function Name: EpCtrlSet_DTOG_TX
 * Parameters: volatile pInt32U pReg, Int32U Data
 *
 * Return: none
 *
 * Description: Set EP DTOG_TX bit (IN)
 *
 *************************************************************************/
void EpCtrlSet_DTOG_TX(volatile pInt32U pReg, Int32U Data);

/*************************************************************************
 * Function Name: EpCtrlToggle_DTOG_TX
 * Parameters: volatile pInt32U pReg
 *
 * Return: none
 *
 * Description: Toggle EP DTOG_TX bit (IN)
 *
 *************************************************************************/
void EpCtrlToggle_DTOG_TX(volatile pInt32U pReg);

/*************************************************************************
 * Function Name: EpCtrlGet_DTOG_TX
 * Parameters: volatile pInt32U pReg
 *
 * Return: Int32U
 *
 * Description: Get EP DTOG_TX bit (IN)
 *
 *************************************************************************/
inline
Int32U EpCtrlGet_DTOG_TX(volatile pInt32U pReg);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区丝袜| 国产精品网友自拍| 精品国产免费人成电影在线观看四季 | 91精品视频网| 欧美一区二区大片| 久久影视一区二区| 国产精品久99| 一区二区在线免费观看| 日韩精品每日更新| 国产精品亚洲视频| 色综合久久66| 精品国产sm最大网站| 亚洲精品五月天| 日韩av电影免费观看高清完整版| 麻豆极品一区二区三区| av在线播放一区二区三区| 欧美在线观看一区| 国产女主播在线一区二区| 一区二区三区国产豹纹内裤在线| 久久精品72免费观看| 99国产欧美另类久久久精品| 日韩精品一区二区三区在线| 中文字幕永久在线不卡| 天天色图综合网| 欧美色窝79yyyycom| 欧美韩国日本一区| 国产精品亚洲专一区二区三区| 色狠狠桃花综合| 国产精品久久久久精k8| 免费视频最近日韩| 国产在线看一区| 欧美一区二区三区人| 亚洲精品美国一| 成人国产精品免费观看动漫| 久久精品一区二区| 国产一区二区女| 久久久久久久免费视频了| 久久国产免费看| 精品第一国产综合精品aⅴ| 亚洲国产综合色| 欧美日韩一区视频| 亚洲国产精品久久一线不卡| 欧美日韩免费观看一区三区| 亚洲精品国产无套在线观| 日韩亚洲欧美成人一区| 偷拍自拍另类欧美| www国产精品av| 亚洲欧美日韩综合aⅴ视频| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩精品视频网| 日韩一级欧美一级| 久久99国产精品久久99| 国产欧美中文在线| 成人伦理片在线| 视频一区欧美日韩| 久久久久国产精品人| 色婷婷精品大视频在线蜜桃视频| 亚洲一区二区精品3399| 欧美成人vps| 91麻豆swag| 国产成a人亚洲精品| 亚洲国产精品一区二区www在线| 日韩欧美在线不卡| 91美女片黄在线观看| 免费成人性网站| 亚洲欧美日韩中文播放| 欧美电视剧在线观看完整版| 成人av一区二区三区| 久久精品国产免费| 一区二区三区美女| 综合分类小说区另类春色亚洲小说欧美| 色天使色偷偷av一区二区| 看电影不卡的网站| 日日夜夜精品视频免费| 亚洲天堂av一区| 亚洲色图在线视频| 国产免费观看久久| 国产亚洲欧洲一区高清在线观看| 欧美高清性hdvideosex| 欧美日韩亚洲综合| 欧美军同video69gay| 欧美日韩五月天| 91精品在线一区二区| 337p亚洲精品色噜噜| 日韩三级免费观看| 久久女同精品一区二区| 色国产综合视频| 一本色道久久综合精品竹菊| 色拍拍在线精品视频8848| 91色视频在线| 欧美人伦禁忌dvd放荡欲情| 欧洲精品一区二区三区在线观看| 一本色道**综合亚洲精品蜜桃冫 | 久久夜色精品国产噜噜av| 精品88久久久久88久久久| 亚洲精品一区二区三区99| 久久久亚洲精品石原莉奈| 日韩一区日韩二区| 日韩专区欧美专区| 国产精品一二一区| 在线免费不卡视频| 精品日韩一区二区三区| 综合亚洲深深色噜噜狠狠网站| 亚洲久本草在线中文字幕| 日韩和的一区二区| 成人午夜激情在线| 日韩欧美资源站| 一区二区三区91| 国产aⅴ综合色| 久久久91精品国产一区二区三区| 一区二区视频在线| 精品一区二区三区香蕉蜜桃| 在线观看91视频| 国产欧美一区二区精品性色| 亚洲成人久久影院| 91福利视频网站| 亚洲欧美另类综合偷拍| 国精产品一区一区三区mba桃花| 欧美色图一区二区三区| 中文字幕一区二区三区不卡在线| 久久99精品国产麻豆不卡| 欧美日韩一区不卡| 亚洲国产电影在线观看| 经典一区二区三区| 精品免费日韩av| 精品伊人久久久久7777人| 欧美日韩一级二级三级| 亚洲一区二区精品久久av| 91丨九色丨蝌蚪丨老版| 一色桃子久久精品亚洲| 成人高清免费在线播放| 国产精品欧美极品| 99精品视频中文字幕| 18涩涩午夜精品.www| 91丝袜美女网| 午夜精品一区在线观看| 日韩精品中文字幕在线一区| 久久av中文字幕片| 中日韩av电影| 在线国产亚洲欧美| 美女视频一区二区| 国产精品天干天干在观线| 99精品一区二区三区| 日韩国产一区二| 中文字幕在线观看一区二区| 色综合色狠狠综合色| 免费在线看成人av| 亚洲国产成人私人影院tom| 国产欧美日韩在线| 成年人国产精品| 麻豆成人久久精品二区三区红| 欧美激情资源网| 欧美一区二区三区的| 成人av资源站| 国产一本一道久久香蕉| 午夜成人免费视频| 中文字幕一区二区三区色视频| 欧美日韩精品综合在线| 91丝袜美女网| 不卡视频一二三| 久草中文综合在线| 日本欧美久久久久免费播放网| 国产精品欧美一区喷水| 欧美va天堂va视频va在线| 欧美性猛交xxxxxx富婆| voyeur盗摄精品| 国产99久久久精品| 国产成人免费在线观看不卡| 欧美aaaaa成人免费观看视频| 一区二区三区影院| 亚洲婷婷综合色高清在线| 欧美国产日韩在线观看| 亚洲国产精品激情在线观看| 国产亚洲一本大道中文在线| 2023国产精品| 国产亚洲精品中文字幕| 久久精品亚洲乱码伦伦中文| 久久亚洲综合色| 国产欧美精品一区| 亚洲欧美日韩精品久久久久| 亚洲欧美日韩在线不卡| 亚洲欧美激情在线| 亚洲自拍与偷拍| 美国欧美日韩国产在线播放| 久久成人综合网| 99久久婷婷国产| 欧美性色欧美a在线播放| 日韩欧美国产三级| 国产欧美日韩精品在线| 亚洲主播在线观看| 精品一区二区在线播放| av电影一区二区| 欧美精品一卡两卡| 国产欧美日韩在线| 亚洲电影在线免费观看| 国产九九视频一区二区三区| 色综合久久久久综合体| www久久精品| 视频一区中文字幕国产| 国产大陆a不卡|