📄 usb_regs.h
字号:
/* SetEPType */
void SetEPType(BYTE /*bEpNum*/,WORD /*wType*/);
#define _SetEPType(bEpNum,wType) (_SetENDPOINT(bEpNum,\
((_GetENDPOINT(bEpNum) & EP_T_MASK) | wType)))
/*----------------------------------------------------------------------------*/
/* GetEPType */
WORD GetEPType(BYTE /*bEpNum*/);
#define _GetEPType(bEpNum) (_GetENDPOINT(bEpNum) & EP_T_FIELD)
/*----------------------------------------------------------------------------*/
/* SetEPTxStatus */
void SetEPTxStatus(BYTE /*bEpNum*/,WORD /*wState*/);
#define _SetEPTxStatus(bEpNum,wState) {\
register WORD _wRegVal; \
_wRegVal = _GetENDPOINT(bEpNum) & EPTX_DTOGMASK; \
/* toggle first bit ? */ \
if((EPTX_DTOG1 & wState)!= 0) \
_wRegVal ^= EPTX_DTOG1; \
/* toggle second bit ? */ \
if((EPTX_DTOG2 & wState)!= 0) \
_wRegVal ^= EPTX_DTOG2; \
_SetENDPOINT(bEpNum, _wRegVal); \
} /* _SetEPTxStatus */
/*----------------------------------------------------------------------------*/
/* SetEPRxStatus */
void SetEPRxStatus(BYTE /*bEpNum*/,WORD /*wState*/);
#define _SetEPRxStatus(bEpNum,wState) {\
register WORD _wRegVal; \
_wRegVal = _GetENDPOINT(bEpNum) & EPRX_DTOGMASK;\
/* toggle first bit ? */ \
if((EPRX_DTOG1 & wState)!= 0) \
_wRegVal ^= EPRX_DTOG1; \
/* toggle second bit ? */ \
if((EPRX_DTOG2 & wState)!= 0) \
_wRegVal ^= EPRX_DTOG2; \
_SetENDPOINT(bEpNum, _wRegVal); \
} /* _SetEPRxStatus */
/*----------------------------------------------------------------------------*/
/* GetEPTxStatus / GetEPRxStatus */
WORD GetEPTxStatus(BYTE /*bEpNum*/);
WORD GetEPRxStatus(BYTE /*bEpNum*/);
#define _GetEPTxStatus(bEpNum) ((WORD)_GetENDPOINT(bEpNum) & EPTX_STAT)
#define _GetEPRxStatus(bEpNum) ((WORD)_GetENDPOINT(bEpNum) & EPRX_STAT)
/*----------------------------------------------------------------------------*/
/* SetEPTxValid / SetEPRxValid */
void SetEPTxValid(BYTE /*bEpNum*/);
void SetEPRxValid(BYTE /*bEpNum*/);
#define _SetEPTxValid(bEpNum) (_SetEPTxStatus(bEpNum, EP_TX_VALID))
#define _SetEPRxValid(bEpNum) (_SetEPRxStatus(bEpNum, EP_RX_VALID))
/*----------------------------------------------------------------------------*/
/* GetTxStallStatus / GetRxStallStatus */
BOOL GetTxStallStatus(BYTE /*bEpNum*/);
BOOL GetRxStallStatus(BYTE /*bEpNum*/);
#define _GetTxStallStatus(bEpNum) (_GetEPTxStatus(bEpNum) \
== EP_TX_STALL)
#define _GetRxStallStatus(bEpNum) (_GetEPRxStatus(bEpNum) \
== EP_RX_STALL)
/*----------------------------------------------------------------------------*/
/* SetEP_KIND / ClearEP_KIND */
void SetEP_KIND(BYTE /*bEpNum*/);
void ClearEP_KIND(BYTE /*bEpNum*/);
#define _SetEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \
(_GetENDPOINT(bEpNum) | EP_KIND) & EPREG_MASK))
#define _ClearEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \
(_GetENDPOINT(bEpNum) & EPKIND_MASK)))
/*----------------------------------------------------------------------------*/
/* Set_Status_Out / Clear_Status_Out */
void Set_Status_Out(BYTE /*bEpNum*/);
void Clear_Status_Out(BYTE /*bEpNum*/);
#define _Set_Status_Out(bEpNum) _SetEP_KIND(bEpNum)
#define _Clear_Status_Out(bEpNum) _ClearEP_KIND(bEpNum)
/*----------------------------------------------------------------------------*/
/* SetEPDoubleBuff / ClearEPDoubleBuff */
void SetEPDoubleBuff(BYTE /*bEpNum*/);
void ClearEPDoubleBuff(BYTE /*bEpNum*/);
#define _SetEPDoubleBuff(bEpNum) _SetEP_KIND(bEpNum)
#define _ClearEPDoubleBuff(bEpNum) _ClearEP_KIND(bEpNum)
/*----------------------------------------------------------------------------*/
/* ClearEP_CTR_RX / ClearEP_CTR_TX */
void ClearEP_CTR_RX(BYTE /*bEpNum*/);
void ClearEP_CTR_TX(BYTE /*bEpNum*/);
#define _ClearEP_CTR_RX(bEpNum) (_SetENDPOINT(bEpNum,\
_GetENDPOINT(bEpNum) & 0x7FFF & EPREG_MASK))
#define _ClearEP_CTR_TX(bEpNum) (_SetENDPOINT(bEpNum,\
_GetENDPOINT(bEpNum) & 0xFF7F & EPREG_MASK))
/*----------------------------------------------------------------------------*/
/* ToggleDTOG_RX / ToggleDTOG_TX */
void ToggleDTOG_RX(BYTE /*bEpNum*/);
void ToggleDTOG_TX(BYTE /*bEpNum*/);
#define _ToggleDTOG_RX(bEpNum) (_SetENDPOINT(bEpNum, \
EP_DTOG_RX | _GetENDPOINT(bEpNum) & EPREG_MASK))
#define _ToggleDTOG_TX(bEpNum) (_SetENDPOINT(bEpNum, \
EP_DTOG_TX | _GetENDPOINT(bEpNum) & EPREG_MASK))
/*----------------------------------------------------------------------------*/
/* ClearDTOG_RX / ClearDTOG_TX */
void ClearDTOG_RX(BYTE /*bEpNum*/);
void ClearDTOG_TX(BYTE /*bEpNum*/);
#define _ClearDTOG_RX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_RX) != 0)\
_ToggleDTOG_RX(bEpNum)
#define _ClearDTOG_TX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_TX) != 0)\
_ToggleDTOG_TX(bEpNum)
/*----------------------------------------------------------------------------*/
/* SetEPAddress */
void SetEPAddress(BYTE /*bEpNum*/,BYTE /*bAddr*/);
#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,\
_GetENDPOINT(bEpNum) & EPREG_MASK | bAddr)
/*----------------------------------------------------------------------------*/
/* GetEPAddress */
BYTE GetEPAddress(BYTE /*bEpNum*/);
#define _GetEPAddress(bEpNum) ((BYTE)(_GetENDPOINT(bEpNum) & EPADDR_FIELD))
/*----------------------------------------------------------------------------*/
/* SetEPTxAddr / SetEPRxAddr*/
void SetEPTxAddr(BYTE /*bEpNum*/,WORD /*wAddr*/);
#define _SetEPTxAddr(bEpNum , wAddr) {\
*_pEPBufAddr(bEpNum) &=0xFFFF0000; \
*_pEPBufAddr(bEpNum) |=((wAddr)&0x0FFFC);\
}
void SetEPRxAddr(BYTE /*bEpNum*/,WORD /*wAddr*/);
#define _SetEPRxAddr(bEpNum, wAddr) {\
*_pEPBufAddr(bEpNum) &=0x0000FFFF;\
*_pEPBufAddr(bEpNum) |=((wAddr<<16)&0xFFFC0000);\
}
/*----------------------------------------------------------------------------*/
/* GetEPTxAddr / GetEPRxAddr */
WORD GetEPTxAddr(BYTE /*bEpNum*/);
#define _GetEPTxAddr(bEpNum) ((WORD)(*_pEPBufAddr(bEpNum) &0x0000FFFF))
WORD GetEPRxAddr(BYTE /*bEpNum*/);
#define _GetEPRxAddr(bEpNum) ((WORD)((*_pEPBufAddr(bEpNum)&0xFFFF0000)>>16))
/*----------------------------------------------------------------------------*/
/* SetEPTxCount / SetEPRxCount */
void SetEPTxCount(BYTE /*bEpNum*/,WORD /*wCount*/);
#define _SetEPTxCount(bEpNum,wCount) {\
*_pEPBufCount(bEpNum) &=0xFFFFFC00;\
*_pEPBufCount(bEpNum) |=wCount;\
}
/*----------------------------------------------------------------------------*/
void SetEPRxCount(BYTE /*bEpNum*/,WORD /*wCount*/);
#define _SetEPRxCount(bEpNum,wCount) {\
DWORD BLsize=0;\
DWORD Blocks;\
if (wCount < 64) Blocks = wCount>>1;\
else\
{\
BLsize = 0x80000000;\
Blocks = wCount>>6;\
}\
*_pEPBufCount(bEpNum) &=~0x80000000;\
*_pEPBufCount(bEpNum) |=BLsize;\
*_pEPBufCount(bEpNum) &=0x83FFFFFF;\
*_pEPBufCount(bEpNum) |=Blocks<<26;\
*_pEPBufCount(bEpNum) &=0xFC00FFFF;\
}
/*----------------------------------------------------------------------------*/
/* GetEPTxCount / GetEPRxCount */
WORD GetEPTxCount(BYTE /*bEpNum*/);
#define _GetEPTxCount(bEpNum) (WORD)(*_pEPBufCount(bEpNum)&0x3FF)
WORD GetEPRxCount(BYTE /*bEpNum*/);
#define _GetEPRxCount(bEpNum) (WORD)((*_pEPBufCount(bEpNum)&0x3FF0000)>>16)
/*----------------------------------------------------------------------------*/
/* SetEPDblBuf0Addr / SetEPDblBuf1Addr */
void SetEPDblBuf0Addr(BYTE /*bEpNum*/,WORD /*wBuf0Addr*/);
void SetEPDblBuf1Addr(BYTE /*bEpNum*/,WORD /*wBuf1Addr*/);
#define _SetEPDblBuf0Addr(bEpNum,wBuf0Addr) {_SetEPTxAddr(bEpNum, wBuf0Addr);}
#define _SetEPDblBuf1Addr(bEpNum,wBuf1Addr) {_SetEPRxAddr(bEpNum, wBuf1Addr);}
/*----------------------------------------------------------------------------*/
/* SetEPDblBuffAddr */
void SetEPDblBuffAddr(BYTE /*bEpNum*/,WORD /*wBuf0Addr*/,WORD /*wBuf1Addr*/);
#define _SetEPDblBuffAddr(bEpNum,wBuf0Addr,wBuf1Addr) { \
_SetEPDblBuf0Addr(bEpNum, wBuf0Addr); \
_SetEPDblBuf1Addr(bEpNum, wBuf1Addr); \
} /* _SetEPDblBuffAddr */
/*----------------------------------------------------------------------------*/
/* GetEPDblBuf0Addr / GetEPDblBuf1Addr */
WORD GetEPDblBuf0Addr(BYTE /*bEpNum*/);
WORD GetEPDblBuf1Addr(BYTE /*bEpNum*/);
#define _GetEPDblBuf0Addr(bEpNum) (_GetEPTxAddr(bEpNum))
#define _GetEPDblBuf1Addr(bEpNum) (_GetEPRxAddr(bEpNum))
/*----------------------------------------------------------------------------*/
/* SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count */
void SetEPDblBuffCount(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);
void SetEPDblBuf0Count(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);
void SetEPDblBuf1Count(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);
/*----------------------------------------------------------------------------*/
/* GetEPDblBuf0Count / GetEPDblBuf1Count */
WORD GetEPDblBuf0Count(BYTE /*bEpNum*/);
WORD GetEPDblBuf1Count(BYTE /*bEpNum*/);
#define _GetEPDblBuf0Count(bEpNum) (GetEPTxCount(bEpNum))
#define _GetEPDblBuf1Count(bEpNum) (GetEPRxCount(bEpNum))
/*----------------------------------------------------------------------------*/
/* FreeUserBuffer */
void FreeUserBuffer(BYTE /*bEpNum*/,BYTE Dir);
/*----------------------------------------------------------------------------*/
/* ToWord */
WORD ToWord(BYTE,BYTE);
/*----------------------------------------------------------------------------*/
/* ByteSwap */
WORD ByteSwap(WORD);
/*----------------------------------------------------------------------------*/
/* DMA Functions */
void SetDMABurstTxSize(BYTE /*DestBsize*/);
void SetDMABurstRxSize(BYTE /*SrcBsize*/);
void DMAUnlinkedModeTxConfig(BYTE /*bEpNum*/ ,BYTE /*index*/);
void DMAUnlinkedModeTxEnable(BYTE /*index*/);
void DMAUnlinkedModeTxDisable(BYTE /*index*/);
void DMAUnlinkedModeRxEnable(BYTE /*bEpNum*/);
void DMAUnlinkedModeRxDisable(BYTE /*bEpNum*/);
void DMALinkedModeRxConfig(BYTE /*bEpNum*/);
void DMALinkedModeTxConfig(BYTE /*bEpNum*/);
void DMALinkedModeRxEnable(void);
void DMALinkedModeTxEnable(void);
void DMALinkedModeRxDisable(void);
void DMALinkedModeTxDisable(void);
void DMASynchEnable(void);
void DMASynchDisable(void);
void SetDMALLITxLength(BYTE /*length*/);
void SetDMALLIRxLength(BYTE /*length*/ );
void SetDMALLIRxPacketNum(BYTE /*PacketNum*/);
BYTE GetDMALLIRxPacketNum(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -