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

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

?? usb_regs.h

?? STR71X源代碼包括例程與各功能的源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
#define _GetTxStallStatus(bEpNum) (_GetEPTxStatus(bEpNum) \
													 == EP_TX_STALL)
#define _GetRxStallStatus(bEpNum) (_GetEPRxStatus(bEpNum) \
													 == EP_RX_STALL)
/*----------------------------------------------------------------*/
/* SetEP_KIND / ClearEP_KIND */
/* IN : bEpNum  = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* sets/clears directly STATUS_OUT bit in the endpoint register */
/* to be used only during control transfers */
/* IN : bEpNum = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* sets/clears directly EP_KIND bit in the endpoint register */
/* IN : bEpNum = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* clears bit CTR_RX / CTR_RX in the endpoint register */
/* IN : bEpNum = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* toggles DTOG_RX / DTOG_TX bit in the endpoint register */
/* IN : bEpNum  = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* IN : bEpNum  = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* sets address in an endpoint register */
/* IN : bEpNum  = endpoint number */
/* 		bAddr   = address */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPAddress(BYTE /*bEpNum*/,BYTE /*bAddr*/);
#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,\
						_GetENDPOINT(bEpNum) & EPREG_MASK | bAddr)
/*----------------------------------------------------------------*/
/* GetEPAddress */
/* IN : bEpNum  = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
BYTE GetEPAddress(BYTE /*bEpNum*/);
#define _GetEPAddress(bEpNum) ((BYTE)(_GetENDPOINT(bEpNum) & EPADDR_FIELD))

/*----------------------------------------------------------------*/
#define _pEPTxAddr(bEpNum)	((DWORD *)((_GetBTABLE()+bEpNum*8  )*2 + PMAAddr))
#define _pEPTxCount(bEpNum)	((DWORD *)((_GetBTABLE()+bEpNum*8+2)*2 + PMAAddr))
#define _pEPRxAddr(bEpNum)	((DWORD *)((_GetBTABLE()+bEpNum*8+4)*2 + PMAAddr))
#define _pEPRxCount(bEpNum)	((DWORD *)((_GetBTABLE()+bEpNum*8+6)*2 + PMAAddr))

/*----------------------------------------------------------------*/
/* SetEPTxAddr / SetEPRxAddr */
/* sets address of the tx/rx buffer */
/* IN : bEpNum = endpoint number */
/*      wAddr  = address to be set ( must be word aligned ) */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPTxAddr(BYTE /*bEpNum*/,WORD /*wAddr*/);
void SetEPRxAddr(BYTE /*bEpNum*/,WORD /*wAddr*/);

/*#define _SetEPTxAddr(bEpNum,wAddr) (*_pEPTxAddr(bEpNum) = (wAddr & 0xFFFE))*/
/*#define _SetEPRxAddr(bEpNum,wAddr) (*_pEPRxAddr(bEpNum) = (wAddr & 0xFFFE))*/

#define _SetEPTxAddr(bEpNum,wAddr) (*_pEPTxAddr(bEpNum) = ((wAddr >> 1) << 1))
#define _SetEPRxAddr(bEpNum,wAddr) (*_pEPRxAddr(bEpNum) = ((wAddr >> 1) << 1))
/*----------------------------------------------------------------*/
/* GetEPTxAddr / GetEPRxAddr */
/* gets address of the tx/rx buffer */
/* IN : bEpNum = endpoint number */
/* IN : */
/* OUT: address of the buffer */
/*----------------------------------------------------------------*/
WORD GetEPTxAddr(BYTE /*bEpNum*/);
WORD GetEPRxAddr(BYTE /*bEpNum*/);

#define _GetEPTxAddr(bEpNum) ((WORD)*_pEPTxAddr(bEpNum))
#define _GetEPRxAddr(bEpNum) ((WORD)*_pEPRxAddr(bEpNum))

/*----------------------------------------------------------------*/
/* SetEPCountRxReg */
/* sets counter of rx buffer with no. of blocks */
/* IN : pdwReg = pointer to counter */
/*      wCount = counter */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPCountRxReg(DWORD * /*pdwReg*/, WORD /*wCount*/);

#define _BlocksOf32(dwReg,wCount,wNBlocks) {\
	 	wNBlocks = wCount >> 5;   	\
	 	if((wCount & 0x1f) == 0)	\
	 			wNBlocks--;  		\
		*pdwReg = (DWORD)((wNBlocks << 10) | 0x8000);\
}/* _BlocksOf32 */

#define _BlocksOf2(dwReg,wCount,wNBlocks) {\
	 	wNBlocks = wCount >> 1;		\
	 	if((wCount & 0x1) != 0)		\
	 			 wNBlocks++;		\
		*pdwReg = (DWORD)(wNBlocks << 10);\
}/* _BlocksOf2 */

#define _SetEPCountRxReg(dwReg,wCount)  {\
 WORD wNBlocks;\
	 if(wCount > 62){_BlocksOf32(dwReg,wCount,wNBlocks);}\
	 else {_BlocksOf2(dwReg,wCount,wNBlocks);}\
}/* _SetEPCountRxReg */


#define _SetEPRxDblBuf0Count(bEpNum,wCount) {\
 DWORD *pdwReg = _pEPTxCount(bEpNum); 		 \
 	 _SetEPCountRxReg(pdwReg, wCount);		 \
}

/*----------------------------------------------------------------*/
/* SetEPTxCount / SetEPRxCount */
/* sets counter for the tx/rx buffer */
/* IN : bEpNum = endpoint number */
/*		wCount = counter value */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPTxCount(BYTE /*bEpNum*/,WORD /*wCount*/);
void SetEPRxCount(BYTE /*bEpNum*/,WORD /*wCount*/);

#define _SetEPTxCount(bEpNum,wCount) (*_pEPTxCount(bEpNum) = wCount)

#define _SetEPRxCount(bEpNum,wCount) {\
 DWORD *pdwReg = _pEPRxCount(bEpNum); \
 	 _SetEPCountRxReg(pdwReg, wCount);\
}

/*----------------------------------------------------------------*/
/* GetEPTxCount / GetEPRxCount */
/* gets counter of the tx buffer */
/* IN : bEpNum = endpoint number */
/* OUT: counter value */
/*----------------------------------------------------------------*/
WORD GetEPTxCount(BYTE /*bEpNum*/);
WORD GetEPRxCount(BYTE /*bEpNum*/);

#define _GetEPTxCount(bEpNum)((WORD)(*_pEPTxCount(bEpNum)) & 0x3ff)
#define _GetEPRxCount(bEpNum)((WORD)(*_pEPRxCount(bEpNum)) & 0x3ff)

/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* SetEPDblBuf0Addr / SetEPDblBuf1Addr */
/* sets buffer 0/1 address in a double buffer endpoint */
/* IN : bEpNum = endpoint number */
/*      wBuf0Addr = buffer 0 address */
/* OUT: none */
/*----------------------------------------------------------------*/
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 */
/* sets addresses in a double buffer endpoint */
/* IN : bEpNum = endpoint number */
/*      wBuf0Addr = buffer 0 address */
/*      wBuf1Addr = buffer 1 address */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPDblBuffAddr(BYTE /*bEpNum*/,WORD /*wBuf0Addr*/,WORD /*wBuf1Addr*/);

#define _SetEPDblBuffAddr(bEpNum,wBuf0Addr,wBuf1Addr) { 		\
					_SetEPDblBuf0Addr(bEpNum, wBuf0Addr);	\
					_SetEPDblBuf1Addr(bEpNum, wBuf1Addr);	\
} /* _SetEPDblBuffAddr */
/*----------------------------------------------------------------*/
/* GetEPDblBuf0Addr / GetEPDblBuf1Addr */
/* gets buffer 0/1 address of a double buffer endpoint */
/* IN : bEpNum = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
WORD GetEPDblBuf0Addr(BYTE /*bEpNum*/);
WORD GetEPDblBuf1Addr(BYTE /*bEpNum*/);

#define _GetEPDblBuf0Addr(bEpNum) (_GetEPTxAddr(bEpNum))
#define _GetEPDblBuf1Addr(bEpNum) (_GetEPRxAddr(bEpNum))
/*----------------------------------------------------------------*/
/* SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count */
/* sets both buffers or buff0 or buff1 counter for double buffering */
/* IN : bEpNum  = endpoint number */
/*		bDir    = endpoint dir  EP_DBUF_OUT = OUT */
/*								EP_DBUF_IN  = IN */
/*		wCount  = counter value     */
/* OUT: none */
/*----------------------------------------------------------------*/
void SetEPDblBuffCount(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);
void SetEPDblBuf0Count(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);
void SetEPDblBuf1Count(BYTE /*bEpNum*/, BYTE /*bDir*/, WORD /*wCount*/);

#define _SetEPDblBuf0Count(bEpNum, bDir, wCount)  { \
		 if(bDir == EP_DBUF_OUT)					\
		     /* OUT endpoint */						\
		     {_SetEPRxDblBuf0Count(bEpNum,wCount);} \
		 else if(bDir == EP_DBUF_IN)				\
		     /* IN endpoint */						\
			 *_pEPTxCount(bEpNum) = (DWORD)wCount;  \
} /* SetEPDblBuf0Count*/

#define _SetEPDblBuf1Count(bEpNum, bDir, wCount)  { \
		 if(bDir == EP_DBUF_OUT)   					\
		     /* OUT endpoint */						\
		     {_SetEPRxCount(bEpNum,wCount);	}		\
		 else if(bDir == EP_DBUF_IN)				\
		     /* IN endpoint */						\
			 *_pEPRxCount(bEpNum) = (DWORD)wCount;  \
} /* SetEPDblBuf1Count */

#define _SetEPDblBuffCount(bEpNum, bDir, wCount) {\
			_SetEPDblBuf0Count(bEpNum, bDir, wCount); \
	 		_SetEPDblBuf1Count(bEpNum, bDir, wCount); \
} /* _SetEPDblBuffCount	 */

/*----------------------------------------------------------------*/
/* GetEPDblBuf0Count / GetEPDblBuf1Count */
/* gets buffer 0/1 rx/tx counter for double buffering */
/* IN : bEpNum  = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
WORD GetEPDblBuf0Count(BYTE /*bEpNum*/);
WORD GetEPDblBuf1Count(BYTE /*bEpNum*/);

#define _GetEPDblBuf0Count(bEpNum) (_GetEPTxCount(bEpNum)) /* rigth version  */
/*#define _GetEPDblBuf0Count(bEpNum)	 (_GetEPRxCount(bEpNum))*/

#define _GetEPDblBuf1Count(bEpNum) (_GetEPRxCount(bEpNum)) /* rigth version  */
/*#define _GetEPDblBuf1Count(bEpNum)	 (_GetEPTxCount(bEpNum))*/

/*----------------------------------------------------------------*/
/* GetEPDblBufDir */
/* gets direction of the double buffered endpoint */
/* IN : bEpNum  = endpoint number */
/* OUT: EP_DBUF_OUT, EP_DBUF_IN, */
/*      EP_DBUF_ERR if the endpoint counter not yet programmed */
/*----------------------------------------------------------------*/
EP_DBUF_DIR GetEPDblBufDir(BYTE /*bEpNum*/);

/*----------------------------------------------------------------*/
/* FreeUserBuffer */
/* free buffer used from the application realising it to the line */
/* toggles bit SW_BUF in the double buffered endpoint register */
/* IN : bEpNum = endpoint number */
/* OUT: none */
/*----------------------------------------------------------------*/
void FreeUserBuffer(BYTE /*bEpNum*/);

/*----------------------------------------------------------------*/
WORD ToWord(BYTE,BYTE);
/*----------------------------------------------------------------*/
WORD ByteSwap(WORD);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频18| 成人午夜视频在线| 国产情人综合久久777777| 亚洲成人一区在线| 久久这里只有精品首页| 在线免费观看成人短视频| 久久www免费人成看片高清| 亚洲一区二区在线免费观看视频| 久久久久国产精品麻豆ai换脸| 在线看日韩精品电影| av日韩在线网站| 懂色av一区二区三区免费观看 | 中国色在线观看另类| 欧美男男青年gay1069videost| www.欧美精品一二区| 国产呦萝稀缺另类资源| 日本欧美一区二区三区乱码| 亚洲主播在线播放| 亚洲欧美自拍偷拍色图| 国产精品亲子乱子伦xxxx裸| 国产日韩影视精品| 国产日韩视频一区二区三区| 精品国产人成亚洲区| 久久久一区二区三区| 久久久久97国产精华液好用吗| 精品成人私密视频| 国产精品视频一区二区三区不卡| 久久久久国产精品厨房| 久久影音资源网| 国产精品青草久久| 亚洲三级在线免费观看| 自拍偷在线精品自拍偷无码专区 | 国产精品久久久久久户外露出 | 国产亚洲精品中文字幕| 欧美成人乱码一区二区三区| 日韩精品一区二区在线观看| 欧美电影精品一区二区| 久久婷婷国产综合精品青草 | 91精品婷婷国产综合久久| 精品久久久久久综合日本欧美| 2019国产精品| 亚洲午夜免费福利视频| 狠狠色狠狠色综合| 91免费小视频| 精品日韩成人av| 亚洲码国产岛国毛片在线| 婷婷开心激情综合| 成人动漫中文字幕| 日韩三级伦理片妻子的秘密按摩| 久久蜜臀中文字幕| 亚洲综合一区在线| 成人小视频在线| 亚洲欧美日韩国产综合| 国产又黄又大久久| 欧美中文字幕一区| 欧美在线三级电影| 337p日本欧洲亚洲大胆精品| 亚洲狠狠爱一区二区三区| 色系网站成人免费| 欧美—级在线免费片| 欧美成人三级在线| 亚洲综合小说图片| 成人av网站在线观看免费| 2022国产精品视频| 五月天一区二区三区| 97久久久精品综合88久久| 国产精品私人自拍| 国产999精品久久久久久| 久久一区二区视频| 久久精品国产免费| 欧美大片在线观看一区二区| 一区二区三区四区在线| 粉嫩绯色av一区二区在线观看 | 狠狠狠色丁香婷婷综合激情| 欧美精品日韩精品| 视频一区二区不卡| 日韩区在线观看| 另类调教123区| 国产日本欧美一区二区| 成人av资源网站| 伊人开心综合网| 欧美一区二区三区免费观看视频 | 麻豆精品蜜桃视频网站| 久久午夜羞羞影院免费观看| 韩国一区二区在线观看| 国产精品区一区二区三| 欧美性视频一区二区三区| 午夜影院久久久| 久久夜色精品一区| 91美女福利视频| 性做久久久久久| 亚洲欧美综合另类在线卡通| 日本丰满少妇一区二区三区| 美女免费视频一区二区| 亚洲欧洲韩国日本视频| 欧美麻豆精品久久久久久| 国产一区二区按摩在线观看| 亚洲色图欧美偷拍| 精品久久久影院| 91丨porny丨首页| 国产一区二区三区免费在线观看| 亚洲欧美综合色| 日韩精品中文字幕在线不卡尤物| aaa亚洲精品一二三区| 日韩经典中文字幕一区| 亚洲丝袜美腿综合| www久久精品| 日韩精品一区二| 91精品国产综合久久久蜜臀粉嫩| 懂色av一区二区三区免费看| 麻豆精品视频在线观看视频| 亚洲国产精品天堂| 一区二区三区高清不卡| 国产精品久久久久久福利一牛影视 | 亚洲三级在线观看| 中国av一区二区三区| 久久亚洲影视婷婷| 精品国产乱码久久久久久久久| 精品视频免费在线| 欧美日韩午夜精品| 欧美午夜宅男影院| 欧美日本在线观看| 欧美精品一二三| 在线播放91灌醉迷j高跟美女 | 国产精品国产三级国产三级人妇 | 首页综合国产亚洲丝袜| 日韩在线观看一区二区| 日本伊人午夜精品| 九九视频精品免费| 国内精品久久久久影院色 | 国产一区二区三区久久久| 国产精品综合在线视频| 国模一区二区三区白浆| 9色porny自拍视频一区二区| zzijzzij亚洲日本少妇熟睡| 一本色道久久综合狠狠躁的推荐 | 日韩女优电影在线观看| 国产色婷婷亚洲99精品小说| 国产精品理论在线观看| 亚洲成av人**亚洲成av**| 麻豆免费精品视频| 92精品国产成人观看免费| 久久免费午夜影院| 亚洲欧美一区二区三区久本道91| 欧美国产精品中文字幕| 欧美一二区视频| 久久久无码精品亚洲日韩按摩| 欧美三级电影网站| 日韩欧美一区二区免费| 欧美视频一区二| 欧美一级夜夜爽| 国产精品私人影院| 人人爽香蕉精品| 一本色道久久综合亚洲91| 在线播放中文一区| 国产精品看片你懂得| 日韩成人精品视频| 91黄色免费看| 欧美激情资源网| 久久爱www久久做| 欧美日韩午夜精品| 伊人夜夜躁av伊人久久| 国产麻豆精品视频| 欧美一区二区三区在线| 国产午夜亚洲精品不卡| 日本免费在线视频不卡一不卡二| 成人app网站| 1区2区3区欧美| 国产精品一二三四| 欧美成人精品福利| 久久精品国产亚洲a| 91精品国产aⅴ一区二区| 一区二区三区精品视频| 95精品视频在线| 亚洲精品精品亚洲| 91久久精品一区二区| 亚洲女与黑人做爰| 91国产福利在线| 亚洲一级电影视频| 欧美日韩免费一区二区三区视频| 亚洲一本大道在线| 欧美久久一二三四区| 久久国产人妖系列| 久久久久国产精品麻豆ai换脸 | 亚洲精品少妇30p| 欧美日韩的一区二区| 青娱乐精品视频在线| 久久综合色婷婷| av电影天堂一区二区在线| 亚洲麻豆国产自偷在线| 欧美日韩在线三级| 精东粉嫩av免费一区二区三区| 久久九九99视频| 欧美日韩成人在线| 国产一区二区在线电影| 亚洲精品视频一区| 26uuu亚洲| 欧美日韩一级片在线观看| 黑人精品欧美一区二区蜜桃| 中文字幕一区二区三|