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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i82527.c

?? CAN例程 源碼 CAN例程 源碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
    else if((pDev->pCtrl->chnMode[channelNum] != WNCAN_CHN_RECEIVE) &&        (pDev->pCtrl->chnMode[channelNum] != WNCAN_CHN_RTR_REQUESTER))    {        errnoSet(S_can_illegal_config);            }    else    {        		/* reset the msg lost bit */		pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL1),0xf7);				retCode = OK;            }	    return retCode;}/************************************************************************** I82527_IsRTR - test if the message has the RTR bit set* The RTR bit of an incoming remote request is not stored in the channel* registers on the I82527. CAN_IsRTR cannot be implemented directly. The* TouCAN has an automatic response feature, that must be used to respond * to incoming remote requests.* To do this:* 1. Select channel mode WNCAN_CHN_RTR_RESPONDER * 2. On this channel call CAN_WriteID and set up matching id for incoming*    remote request* 3. Set up response data by calling CAN_WriteData** RETURNS:        -1 *   * ERRNO:          S_can_use_auto_response_feature**/static int I82527_IsRTR      (	  struct WNCAN_Device *pDev,	  UCHAR channelNum	  ){    errnoSet(S_can_use_auto_response_feature);    return -1;}/************************************************************************** I82527_SetRTR - Sets RTR bit** The TouCAN supports transmitting and receiving a message in the same * channel. The driver supports special channel modes namely * WNCAN_CHN_RTR_REQUESTER and WMCAN_CHN_RTR_RESPONDER to handle setting up* RTR messages easier. * ** RETURNS:        ERROR*   * ERRNO:          S_can_use_rtr_requester_channel_mode**/static STATUS I82527_SetRTR      (	  struct WNCAN_Device *pDev,	  UCHAR channelNum,	  BOOL  rtr	  ){    errnoSet(S_can_use_rtr_requester_channel_mode);    return ERROR;}/************************************************************************** I82527_TxAbort - abort the current CAN transmission** This routine aborts any current CAN transmissions on the controller.** RETURNS:        N/A*   * ERRNO:          N/A**/static void I82527_TxAbort      (	  struct WNCAN_Device *pDev	  ){    unsigned int i;    volatile UCHAR value;	    for (i = 0; i < I82527_MAX_MSG_OBJ; i++)    {        if((pDev->pCtrl->chnMode[i] == WNCAN_CHN_TRANSMIT) &&            ~(pDev->pCtrl->chnMode[i] & WNCAN_IS_CHN_RTR))        {            value = pDev->pBrd->canInByte(pDev,(I82527_R_XMT +                (I82527_OFFS_MSG * i) + I82527_OFFS_CTRL1)); 	     /*check if TxRqst is set*/	                       if(value & 0x20)            {		/*yes, reset TxRqst*/                value |= 0xdf;                pDev->pBrd->canOutByte(pDev,(I82527_R_XMT +                    (I82527_OFFS_MSG * i) + I82527_OFFS_CTRL1),value);            }        }    }	    return;}/************************************************************************** I82527_Sleep - put the CAN controller to sleep** This routine puts the CAN controller of the device into sleep mode* if the hardware supports this functionality; otherwise, this function* is a no-op.aborts any current CAN transmissions on the controller** RETURNS:        OK always*   * ERRNO:          N/A**/static STATUS I82527_Sleep      (	  struct WNCAN_Device *pDev	  ){    UCHAR value;    value = pDev->pBrd->canInByte(pDev, I82527_R_INFR);    value |= 0x08;    pDev->pBrd->canOutByte(pDev, I82527_R_INFR, value);    return OK;}/************************************************************************** I82527_WakeUp - brings CAN controller out of sleep mode** Auto awake feature is always enabled** RETURNS:        OK always*   * ERRNO:          N/A*/static STATUS I82527_WakeUp      (	  struct WNCAN_Device *pDev	  ){    volatile UCHAR value;    value = pDev->pBrd->canInByte(pDev, I82527_R_INFR);    value &= 0xf7;    pDev->pBrd->canOutByte(pDev, I82527_R_INFR, value);    return OK;}/************************************************************************* I82527_EnableChannel -  make channel active** If the mode of the channel is WNCAN_CHN_RECEIVE the channel is ready to* receive messages matching the filter + id combination, when this function* exits.* If the mode of the channel is WNCAN_CHN_RTR_RESPONDER the channel is* ready to receive matching remote requests, when this function exits.*               ** RETURNS: OK if successful, ERROR otherwise*   * ERRNO: S_can_illegal_channel_no*/static STATUS I82527_EnableChannel      (	  struct WNCAN_Device *pDev,	  UCHAR channelNum, 	  WNCAN_IntType useInterrupts	  ){        STATUS retCode = ERROR; /* pessimistic */	UCHAR  value = 0;	    if (channelNum >= I82527_MAX_MSG_OBJ)    {        errnoSet(S_can_illegal_channel_no);        return retCode;    }	    switch(pDev->pCtrl->chnMode[channelNum]) {    case WNCAN_CHN_TRANSMIT:		/*		mark message object as invalid:  MsgVal   = 0 1		set tranmit interrupt enable:    TXIE     = 1 0 		reset receive interrrupt enable: RXIE     = 0 1		unchanged   interrupt pending:   IntPnd   = 0 1		7 6      5 4   3 2   1 0		MsgVal   TXIE  RXIE  IntPnd		*/				if(useInterrupts)            value = 0x65;        else            value = 0x55;                pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), value);		/*		reset remote transmission pending:     RmtPnd = 0 1        reset transmit request:                TxRqst = 0 1        new data unchanged:                    NewDat = 1 1        set CPU update :                       CPUUpd = 1 0        7 6      5 4      3 2      1 0        RmtPnd   TxRqst   NewDat   CPUUpd		*/        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL1), 0x5e);                /* Set direction to transmit */        value = pDev->pBrd->canInByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR));        value |= 0x8;                pDev->pBrd->canOutByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR),value);                /* mark message object as valid:  MsgVal   = 1 0 */        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), 0xbf);                retCode = OK;        break;            case WNCAN_CHN_RECEIVE:		/* 		mark message object as invalid:  MsgVal   = 0 1		unset tranmit interrupt enable:  TXIE     = 0 1 		set receive interrrupt enable:   RXIE     = 1 0		unchanged   interrupt pending:   IntPnd   = 0 1		7 6      5 4   3 2   1 0		MsgVal   TXIE  RXIE  IntPnd		*/              		        if(useInterrupts)                           value = 0x59;        else            value = 0x55;                pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), value);        		/*		reset remote transmission pending:     RmtPnd = 0 1		reset transmit request:                TxRqst = 0 1		unchanged new data:                    NewDat = 1 1		reset CPU update:                      CPUUpd = 0 1		7 6      5 4      3 2      1 0		RmtPnd   TxRqst   NewDat   CPUUpd 		*/        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL1), 0x5d);                /* Set direction to receive */        value = pDev->pBrd->canInByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR));        value &= ~0x8;        pDev->pBrd->canOutByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR),value);                /* mark message object as valid:  MsgVal   = 1 0 */        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), 0xbf);                retCode = OK;                break;            case WNCAN_CHN_RTR_REQUESTER:		/*		mark message object as invalid:  MsgVal   = 0 1		set tranmit interrupt enable:    TXIE     = 1 0 		reset receive interrrupt enable: RXIE     = 0 1		unchanged   interrupt pending:   IntPnd   = 0 1		7 6      5 4   3 2   1 0		MsgVal   TXIE  RXIE  IntPnd		*/		                   if(useInterrupts == WNCAN_INT_NONE)			value |= 0x55;		else 		{			if(useInterrupts & WNCAN_INT_TX)				value |= 0x65;						if(useInterrupts & WNCAN_INT_RX)				value |= 0x59;                    		}                pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), value);        		/*		reset remote transmission pending:     RmtPnd = 0 1        reset transmit request:                TxRqst = 0 1        new data unchanged:                    NewDat = 1 1        set CPU update :                       CPUUpd = 1 0        7 6      5 4      3 2      1 0		RmtPnd   TxRqst   NewDat   CPUUpd		*/        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL1), 0x5e);                /* Set direction to receive */        value = pDev->pBrd->canInByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR));        value &= ~0x8;        pDev->pBrd->canOutByte(pDev,(I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR),value);                /* mark message object as valid:  MsgVal   = 1 0 */        pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +             (I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), 0xbf);                retCode = OK;        break;        	case WNCAN_CHN_RTR_RESPONDER:		/*		mark message object as invalid:  MsgVal   = 0 1		set tranmit interrupt enable:    TXIE     = 1 0 		reset receive interrrupt enable: RXIE     = 0 1		unchanged   interrupt pending:   IntPnd   = 0 1		7 6      5 4   3 2   1 0		MsgVal   TXIE  RXIE  IntPnd 		*/				if(useInterrupts == WNCAN_INT_NONE)			value |= 0x55;		else 		{			if(useInterrupts & WNCAN_INT_TX)				value |= 0x65;						if(useInterrupts & WNCAN_INT_RX)				value |= 0x59;                    		}				pDev->pBrd->canOutByte(pDev, (I82527_R_XMT + 			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), value);		/*		reset remote transmission pending:     RmtPnd = 0 1		reset transmit request:                TxRqst = 0 1		new data unchanged:                    NewDat = 1 1		set CPU update :                       CPUUpd = 1 0		7 6      5 4      3 2      1 0		RmtPnd   TxRqst   NewDat   CPUUpd		*/		pDev->pBrd->canOutByte(pDev, (I82527_R_XMT + 			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL1), 0x5e);				/* Set direction to transmit */		value = pDev->pBrd->canInByte(pDev,(I82527_R_XMT + 			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR));				value |= 0x8;		pDev->pBrd->canOutByte(pDev,(I82527_R_XMT + 			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_MCR),value);				/* mark message object as valid:  MsgVal   = 1 0 */		pDev->pBrd->canOutByte(pDev, (I82527_R_XMT + 			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), 0xbf);				retCode = OK;		break;			default:		errnoSet(S_can_illegal_config);            		break;        }				return retCode;}/************************************************************************** I82527_DisableChannel -  make channel inactive*                           ** RETURNS: OK if successful, ERROR otherwise*   * ERRNO: S_can_illegal_channel_no**/static STATUS I82527_DisableChannel(	struct WNCAN_Device *pDev,	UCHAR channelNum){    STATUS retCode = ERROR; /* pessimistic */    if (channelNum >= I82527_MAX_MSG_OBJ)    {        errnoSet(S_can_illegal_channel_no);            }	else	{		/* mark message object as invalid:  MsgVal   = 0 1		   reset interrupt enable:          TXIE     = 0 1 	       reset interrrupt enable:         RXIE     = 0 1	       reset interrupt pending:         IntPnd   = 0 1	       7 6      5 4   3 2   1 0		   MsgVal   TXIE  RXIE  IntPnd  */		pDev->pBrd->canOutByte(pDev, (I82527_R_XMT +			(I82527_OFFS_MSG * channelNum) + I82527_OFFS_CTRL0), 0x55);				retCode = OK;	}           return retCode;}/******************************************************************************* I82527_WriteReg -  Access hardware register and write data*                           * This function accesses the CAN controller memory at the offset specified. * A list of valid offsets are defined as macros in a CAN controller specific* header file, named as controllerOffsets.h (e.g. toucanOffsets.h or sja1000Offsets.h)* A pointer to the data buffer holding the data to be written is passed to the* function in UBYTE *data. The number of data bytes to be copied from the data* buffer to the CAN controller's memory area is specified by the length parameter.** RETURNS: OK or ERROR** ERRNO: S_can_illegal_offset**/static STATUS I82527_WriteReg( struct WNCAN_Device *pDev, UINT offset, UCHAR * data, UINT length ){	STATUS retCode = ERROR;	UINT i;	if((offset + length) > I82527_MAX_OFFSET)		{		errnoSet(S_can_illegal_

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美年轻男男videosbes| 欧美最猛黑人xxxxx猛交| 亚洲精品成人少妇| 日韩欧美色电影| 色婷婷av一区二区三区大白胸| 日本成人在线不卡视频| 1区2区3区精品视频| 日韩一级在线观看| 一本久久综合亚洲鲁鲁五月天| 蜜桃视频在线观看一区二区| 亚洲日本欧美天堂| 久久中文娱乐网| 在线电影院国产精品| 99精品国产视频| 久久草av在线| 日韩高清不卡一区二区| 亚洲免费在线观看视频| 亚洲精品一区二区三区在线观看| 欧日韩精品视频| 成人永久aaa| 激情深爱一区二区| 丝袜美腿亚洲色图| 一区二区激情视频| 国产精品另类一区| 国产天堂亚洲国产碰碰| 日韩欧美在线观看一区二区三区| 欧美性猛交xxxx黑人交| av在线综合网| 成人爱爱电影网址| 国产麻豆成人精品| 狠狠色丁香婷综合久久| 老司机午夜精品| 蜜桃一区二区三区在线观看| 日韩1区2区3区| 午夜电影一区二区三区| 亚洲高清免费视频| 亚洲一区二区在线免费看| 亚洲人成网站色在线观看| 亚洲国产精品成人久久综合一区 | 成人网在线播放| 国产一区二区三区高清播放| 久久99精品久久久久婷婷| 日韩精品电影在线观看| 亚洲一级二级三级| 亚洲午夜在线视频| 亚洲一区在线观看免费观看电影高清| 亚洲精选一二三| 一区二区三区精品| 亚洲va欧美va天堂v国产综合| 一区二区三区**美女毛片| 亚洲一区中文日韩| 亚洲国产欧美日韩另类综合 | 一区二区三区波多野结衣在线观看| 中文字幕视频一区二区三区久| 国产精品久久久久精k8| 国产精品短视频| 亚洲综合激情另类小说区| 亚洲国产精品影院| 日本视频在线一区| 国产精品自拍网站| 成人app在线| 在线观看日韩电影| 欧美久久免费观看| 精品欧美乱码久久久久久1区2区| 久久综合色婷婷| 国产精品国产三级国产普通话蜜臀 | 悠悠色在线精品| 性做久久久久久免费观看| 免费高清视频精品| 国产mv日韩mv欧美| 在线欧美日韩国产| 日韩一区二区免费在线观看| 久久久久久一二三区| 中文字幕亚洲电影| 丝袜诱惑制服诱惑色一区在线观看| 麻豆精品国产传媒mv男同| 丁香激情综合国产| 欧美熟乱第一页| 精品88久久久久88久久久| 国产精品久99| 视频一区国产视频| 国产电影精品久久禁18| 色婷婷av一区二区三区大白胸 | 色婷婷综合激情| 精品乱码亚洲一区二区不卡| 国产精品福利电影一区二区三区四区 | 欧美日韩一级二级三级| 精品国产乱码久久| 亚洲另类中文字| 狠狠色丁香婷综合久久| 91极品视觉盛宴| 久久在线免费观看| 亚洲一线二线三线视频| 国产精品亚洲综合一区在线观看| 日本高清不卡视频| 久久一区二区三区四区| 亚洲夂夂婷婷色拍ww47 | 日韩精品欧美精品| 成人h精品动漫一区二区三区| 欧美剧情片在线观看| 国产精品欧美久久久久一区二区| 亚洲777理论| 99久久99久久精品免费看蜜桃| 日韩欧美国产三级| 亚洲一区在线视频| 99久久久国产精品免费蜜臀| 日韩美女一区二区三区四区| 一区二区三区视频在线观看| 豆国产96在线|亚洲| 日韩欧美综合一区| 午夜一区二区三区视频| 91蜜桃网址入口| 国产精品亲子乱子伦xxxx裸| 九九九精品视频| 91精品一区二区三区久久久久久 | 午夜精品在线看| 91在线视频播放地址| 欧美精品一区二区三区视频| 亚洲成av人在线观看| 97se亚洲国产综合自在线不卡| 久久欧美一区二区| 久久国产精品免费| 欧美一区二区性放荡片| 亚洲福利视频导航| 日本精品一区二区三区高清| 国产日韩欧美在线一区| 国产最新精品精品你懂的| 日韩一级视频免费观看在线| 婷婷丁香激情综合| 欧美日韩久久久久久| 亚洲一区二区三区在线播放| 色综合天天做天天爱| 亚洲综合在线第一页| 不卡的av电影| 国产精品久久久久影院| 国产·精品毛片| 国产日韩欧美制服另类| 国产精品伊人色| 久久综合色鬼综合色| 国产专区欧美精品| 久久亚洲一区二区三区明星换脸| 免费精品视频最新在线| 91精品国产综合久久久久久久| 日韩在线观看一区二区| 欧美精品丝袜中出| 日韩成人免费电影| 日韩欧美一区二区三区在线| 日本不卡不码高清免费观看| 欧美一区二区在线不卡| 蜜桃av一区二区在线观看| 欧美va日韩va| 国产黄人亚洲片| 中文字幕中文字幕在线一区| 色综合天天综合网国产成人综合天 | 久久综合五月天婷婷伊人| 国产一二三精品| 国产精品久久久久久亚洲伦| 99精品久久只有精品| 亚洲一本大道在线| 欧美一级专区免费大片| 韩国精品主播一区二区在线观看| 久久日韩粉嫩一区二区三区| 成年人网站91| 亚洲综合色自拍一区| 日韩一卡二卡三卡四卡| 国产乱妇无码大片在线观看| 国产精品久久精品日日| 在线观看亚洲精品| 日产国产高清一区二区三区| 精品美女一区二区三区| 99热这里都是精品| 亚洲成人精品影院| 日韩精品中文字幕一区| 成人av集中营| 日韩高清在线观看| 久久久久99精品国产片| 91视频国产观看| 美日韩黄色大片| 1000精品久久久久久久久| 欧美日韩国产高清一区| 国产老妇另类xxxxx| 一区二区三区美女| 欧美精品一区二区三| 色综合亚洲欧洲| 国模少妇一区二区三区| 一区二区三区波多野结衣在线观看 | 欧美这里有精品| 国产一区二区三区综合| 亚洲三级理论片| 日韩女优毛片在线| 一本色道亚洲精品aⅴ| 久久电影网站中文字幕| 亚洲靠逼com| 国产亚洲欧美日韩俺去了| 欧美私人免费视频| 成人免费观看av| 免费成人你懂的| 一区二区三区 在线观看视频| 久久久国产精华| 91精品国产综合久久福利|