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

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

?? canfunc.c

?? 實現簡單的RS232 TO CAN,CAN T0 RS232的數據轉換
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        產品一部 
**                                 http://www.zlgmcu.com
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
**	文   件  	名:	CANFUNC.C
** 	版  		本:	v1.0
** 	日		期:	2004年2月23日
**	描		述:	CAN模塊功能操作函數說明文件
********************************************************************************************************/
#define	_CANFUNC_GLOBAL_
#include 	"config.h"
/*
***********************************************************************************************************
**函數原型		:  	void	HwRstCAN (eCANNUM CanNum)
**參數說明		:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	無	
**說	明		:	本函數用于硬件復位CAN控制器,主要是CAN模塊掉電,用于省電處理
************************************************************************************************************/
void		HwRstCAN(eCANNUM CanNum)
{
	PCONP &= ~((UINT32)0x01 << (13+CanNum));
}
/*
***********************************************************************************************************
**函數原型		:  	void	HwEnCAN (eCANNUM CanNum)
**參數說明		:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	無	
**說	明		:	本函數用于硬件使能CAN控制器
************************************************************************************************************/
void		HwEnCAN(eCANNUM CanNum)
{
	CANAFMR.Bits.AccBP_BIT =1;
	PCONP |= ((UINT32)0x01 << (13+CanNum));
	switch(CanNum)
	{
		case	CAN1:
			PINSEL1 &=  ~((UINT32)0x03 << 18);
			PINSEL1 |=  ((UINT32)0x01 << 18);
			break;
		case	CAN2:
			PINSEL1 &=  ~((UINT32)0x0F << 14);
			PINSEL1 |=  ((UINT32)0x05 << 14);
			break;
		case	CAN3:
			PINSEL1 &=  ~((UINT32)0x0F << 10);
			PINSEL1 |=  ((UINT32)0x06 << 10);
			break;
		case	CAN4:
			PINSEL1 |=  ((UINT32)0x0F << 24);
			break;
		default:
			break;	
	}
}
/*
***********************************************************************************************************
**函數原型	:  	UINT32	SoftRstCAN (eCANNUM CanNum)
**參數說明	:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	=0,表示復位成功; ?。?,復位不成功;	
**說	明		:	本函數用于軟件復位CAN控制器
************************************************************************************************************/
UINT32		SoftRstCAN(eCANNUM CanNum)
{
	CANMOD(CanNum).Bits.RM_BIT =1;
	return(!CANMOD(CanNum).Bits.RM_BIT );
}
/*
***********************************************************************************************************
**函數原型		:  	UINT32	SoftEnCAN (eCANNUM CanNum)
**參數說明		:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	=0,表示成功使CAN控制器進入工作模式; !=0,不成功;	
**說	明		:	本函數用于軟件使能CAN控制器
************************************************************************************************************/
UINT32		SoftEnCAN(eCANNUM CanNum)
{
	CANMOD(CanNum).Bits.RM_BIT =0;
	return(CANMOD(CanNum).Bits.RM_BIT );
}
/*
***********************************************************************************************************
**函數原型		:  	void	CanSendCmd(eCANNUM CanNum,UINT32 Cmd,UINT32 TxBuf)
**參數說明		:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
					Cmd		--> 發送命令字
					TxBuf	-->	選擇發送緩沖區
**返回值		:		
**說	明		:	本函數用于發送命令處理
************************************************************************************************************/
void	CanSendCmd(eCANNUM CanNum,UINT32 Cmd,UINT32 TxBuf)
{
		uCANCMR Temp;
	Temp.Word =0;
	Temp.Bits.STB1_BIT = TxBuf & 0x00000001;
	Temp.Bits.STB2_BIT = (TxBuf & 0x00000002)>>1;
	Temp.Bits.STB3_BIT = (TxBuf & 0x00000004)>>2;
	switch(Cmd)
	{
		case	1:
			if (CANMOD(CanNum).Bits.STM_BIT != 0)
			{
				while (!CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 1;
				/*****************************/	
				while (CANMOD(CanNum).Bits.STM_BIT)
					CANMOD(CanNum).Bits.STM_BIT = 0;
				/******************************/
				while (CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 0;
			}
			Temp.Bits.AT_BIT =1;						//單次發送
			Temp.Bits.TR_BIT =1;
			break;
		case	2:
		case	3:									//自發自收
			if (CANMOD(CanNum).Bits.STM_BIT != 1)
			{
				while (!CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 1;
				/******************************/	
				while (!CANMOD(CanNum).Bits.STM_BIT)
					CANMOD(CanNum).Bits.STM_BIT = 1;
				/*****************************/
				while (CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 0;
			}
			Temp.Bits.SRR_BIT =1;
			if(Cmd == 3)							//單次自發自收
			{
				Temp.Bits.AT_BIT =1;
			}
			break;
		case 	0:
		default:									//正常發送
			if (CANMOD(CanNum).Bits.STM_BIT != 0)
			{
				while (!CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 1;
				/*****************************/	
				while (CANMOD(CanNum).Bits.STM_BIT)
					CANMOD(CanNum).Bits.STM_BIT = 0;
				/******************************/
				while (CANMOD(CanNum).Bits.RM_BIT)
					CANMOD(CanNum).Bits.RM_BIT = 0;
			}
			Temp.Bits.TR_BIT =1;
			break;
	}
	CANCMR(CanNum) = Temp;
}
/*
***********************************************************************************************************
**函數原型	:  	UINT32	WriteCanTxBuf(eCANNUM CanNum,UINT32 TxBufNum,
										UINT32 TPM,P_stcTxBUF Buf) ;
**參數說明	:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
				TxBufNum	-->	選擇發送緩沖區
				TPM			-->	發送優先級模式
				Buf			-->	發送到總線的數據
**返回值		:	=0;成功將數據寫入發送緩沖區
					!=0;寫發送緩沖區操作失敗	
**說	明		:	本函數用于向CAN發送緩沖區TxBUF寫入發送數據
***********************************************************************************************************
*/
UINT32	WriteCanTxBuf(eCANNUM CanNum,UINT32 TxBufNum,UINT32 TPM,P_stcTxBUF Buf)
{
	UINT32	status=0;
	switch(TxBufNum)
	{

		case	SEND_TX_BUF1:
			if((0== CANSR(CanNum).Bits.TS1_BIT)&&(0 != CANSR(CanNum).Bits.TBS1_BIT))
			{
				CANTFI1(CanNum)=Buf->TxFrameInfo;
				CANTID1(CanNum)=Buf->TxCANID;
				CANTDA1(CanNum)=Buf->CANTDA;
				CANTDB1(CanNum)=Buf->CANTDB;
			}
			else
			{
				status = 0x01;
			}
			break;
		case	SEND_TX_BUF2:
			if((0== CANSR(CanNum).Bits.TS2_BIT)&&(0 !=CANSR(CanNum).Bits.TBS2_BIT))
			{
				CANTFI2(CanNum)=Buf->TxFrameInfo;
				CANTID2(CanNum)=Buf->TxCANID;
				CANTDA3(CanNum)=Buf->CANTDA;
				CANTDB2(CanNum)=Buf->CANTDB;
			}
			else
			{
				status = 0x01;
			}
			break;
		case	SEND_TX_BUF3:
			if((0== CANSR(CanNum).Bits.TS3_BIT)&&(0 != CANSR(CanNum).Bits.TBS3_BIT))
			{
				CANTFI3(CanNum)=Buf->TxFrameInfo;
				CANTID3(CanNum)=Buf->TxCANID;
				CANTDA3(CanNum)=Buf->CANTDA;
				CANTDB3(CanNum)=Buf->CANTDB;
			}
			else
			{
				status = 0x01;
			}
			break;
		default:
			status = 0x01;
			break;
	}
	if(TPM == 1)
	{
		CANMOD(CanNum).Bits.TPM_BIT =1;
	}
	return(status);
}
/*
***********************************************************************************************************
**函數原型	:  	void	ReadCanRxBuf(eCANNUM CanNum,P_stcRxBUF Buf)
**參數說明	:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
				Buf			-->>	接收CAN總線數據
**返回值		:	
**說	明		:	本函數用于從CAN控制器RxBuf中讀取數據
***********************************************************************************************************
*/
void	ReadCanRxBuf(eCANNUM CanNum,P_stcRxBUF Buf)
{
	Buf->CANRcvFS 	=CANRFS(CanNum);
	Buf->RxCANID 	=CANRID(CanNum);
	Buf->CANRDA	=CANRDA(CanNum);
	Buf->CANRDB	=CANRDB(CanNum);
}
/*
***********************************************************************************************************
**函數原型		:  	UINT32 	CanEntrySM(CanNum)
**參數說明		:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	=0;成功進入睡眠狀態;
					!=0;不能進入睡眠狀態;	
**說	明		:	本函數用于使CAN控制器進入休眠模式
***********************************************************************************************************
*/
UINT32	CanEntrySM(eCANNUM	CanNum)
{
	CANMOD(CanNum).Bits.SM_BIT = 1;	
	return(!CANMOD(CanNum).Bits.SM_BIT);
}
/*
***********************************************************************************************************
**函數原型		:  	UINT32 CanQuitSM(eCANNUM	CanNum)
**參數說明		:  	CanNum		-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	=0;成功退出睡眠狀態;
					!=0;不能退出睡眠狀態;	
**說	明		:	本函數用于使CAN控制器退出休眠模式
***********************************************************************************************************
*/
UINT32 CanQuitSM(eCANNUM	CanNum)	
{
	uCANMod		i;
	i=CANMOD(CanNum);
	CANMOD(CanNum).Bits.RM_BIT=1; 
	CANMOD(CanNum).Bits.SM_BIT = 0;	
	CANMOD(CanNum).Bits.RM_BIT=i.Bits.RM_BIT; 
	return(CANMOD(CanNum).Bits.SM_BIT);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美哺乳videos| 中文字幕在线不卡| 国产精品久久久久久亚洲伦 | 日韩免费一区二区| 国产精品久久久久久久久快鸭 | 婷婷一区二区三区| 成人一区二区在线观看| 这里是久久伊人| 国产精品美女久久久久久| 奇米影视一区二区三区| 色美美综合视频| 欧美经典一区二区| 免费在线看一区| 欧美视频中文字幕| 亚洲欧洲韩国日本视频| 国产伦精品一区二区三区在线观看| 91久久精品国产91性色tv| 欧美激情一区二区| 国产精品88888| 久久久亚洲精华液精华液精华液| 蜜臀精品一区二区三区在线观看| 一本色道久久综合精品竹菊| 国产精品久久久久婷婷二区次| 狠狠久久亚洲欧美| 日韩一区二区三区免费观看| 亚洲国产精品久久人人爱蜜臀| 91老师国产黑色丝袜在线| 日韩av电影免费观看高清完整版| 97se亚洲国产综合自在线不卡| 亚洲国产精品99久久久久久久久 | 91精品国产综合久久香蕉麻豆| 亚洲情趣在线观看| 成人高清免费在线播放| 国产亚洲欧美日韩在线一区| 精品一区二区在线免费观看| 精品国产免费一区二区三区香蕉| 免费成人在线观看| 欧美zozo另类异族| 国产乱码精品一区二区三区av| 久久久久久久久久久久久夜| 国产精品一区二区无线| 欧美激情一区二区三区蜜桃视频 | 精品一区二区三区在线观看 | 久久9热精品视频| 日韩女优毛片在线| 极品少妇一区二区三区精品视频| 精品国产欧美一区二区| 国产精品18久久久久久久久| 国产精品日日摸夜夜摸av| 99精品国产热久久91蜜凸| 一区二区在线观看免费| 欧美视频在线不卡| 蜜臀久久久久久久| 国产亚洲一区字幕| 色婷婷综合久久| 男人的天堂亚洲一区| 久久精品日韩一区二区三区| 99r精品视频| 天堂成人免费av电影一区| 日韩免费在线观看| 福利电影一区二区| 亚洲一区在线视频观看| 91精品国产一区二区| 国产米奇在线777精品观看| 国产精品久久精品日日| 欧美日韩中文字幕精品| 久久国产成人午夜av影院| 国产精品欧美一区喷水| 欧美日韩亚洲高清一区二区| 国内精品写真在线观看| 亚洲男人电影天堂| 欧美tk—视频vk| 91在线精品秘密一区二区| 男女激情视频一区| 亚洲欧洲无码一区二区三区| 91精品国产91久久久久久最新毛片 | 中文字幕av一区二区三区高| 91成人看片片| 国产一区二区三区精品视频| 一级女性全黄久久生活片免费| 欧美不卡一区二区| 欧美综合在线视频| 国产91丝袜在线观看| 偷拍亚洲欧洲综合| 亚洲免费观看高清| 国产亚洲制服色| 欧美一区二区在线免费播放| 色综合久久综合中文综合网| 国产一区二区不卡| 日本成人在线不卡视频| 亚洲另类春色校园小说| 国产日韩欧美综合在线| 日韩视频一区二区| 在线观看日韩精品| 99精品久久只有精品| 国内精品写真在线观看| 爽好久久久欧美精品| 一区二区三区av电影| 亚洲国产精品成人综合色在线婷婷| 日韩欧美久久久| 欧美午夜电影在线播放| 99免费精品在线观看| 国产精品影视在线| 91日韩一区二区三区| 粉嫩绯色av一区二区在线观看| 久久99久久久欧美国产| 日本女优在线视频一区二区| 亚洲大片一区二区三区| 亚洲蜜桃精久久久久久久| 国产精品高清亚洲| 国产精品入口麻豆原神| 中文在线资源观看网站视频免费不卡| 日韩精品一区二区三区蜜臀| 制服丝袜在线91| 欧美精品日韩综合在线| 欧美日韩电影一区| 欧美色综合网站| 日本精品一区二区三区四区的功能| 成人激情视频网站| 成人激情免费网站| 91伊人久久大香线蕉| 99久久99久久精品国产片果冻| 99国产精品视频免费观看| 不卡的av网站| 波多野结衣一区二区三区| 国产激情视频一区二区三区欧美 | 精品不卡在线视频| 久久久综合网站| 久久网这里都是精品| 中文字幕国产一区二区| 中文字幕中文字幕中文字幕亚洲无线| 中文字幕精品综合| 中文字幕综合网| 一区二区三区在线视频免费| 亚洲一区免费观看| 美女久久久精品| 国产一区二区91| 99精品视频一区| 9191久久久久久久久久久| 精品理论电影在线| 中文字幕欧美激情| 亚洲综合久久久| 免费成人性网站| 99久久免费精品| 337p亚洲精品色噜噜狠狠| 国产日韩欧美麻豆| 亚洲福中文字幕伊人影院| 奇米精品一区二区三区在线观看一| 国产激情精品久久久第一区二区 | 日韩一区二区三区在线| 国产色一区二区| 玉足女爽爽91| 精品一区二区久久久| 91丨porny丨蝌蚪视频| 欧美日韩成人高清| 国产欧美精品一区二区三区四区| 亚洲精品国产品国语在线app| 免费日韩伦理电影| 91视频观看免费| 日韩视频免费观看高清完整版在线观看 | 国产肉丝袜一区二区| 亚洲国产精品久久不卡毛片| 国产乱码精品1区2区3区| 欧洲激情一区二区| 日本一区二区三区电影| 午夜国产不卡在线观看视频| 国产黄色精品网站| 91麻豆精品久久久久蜜臀| 欧美高清在线视频| 欧美a一区二区| 色婷婷av一区二区三区软件| 久久影院午夜论| 日韩精品一二三四| 色狠狠av一区二区三区| xfplay精品久久| 日韩精品久久理论片| 色婷婷综合久久久久中文 | 久久综合资源网| 亚洲一区二区在线免费观看视频| 国产麻豆成人传媒免费观看| 欧美日韩国产系列| 一区二区三区四区中文字幕| 国产不卡视频在线观看| 日韩精品在线看片z| 亚洲一区二区五区| 色久优优欧美色久优优| 亚洲欧美一区二区视频| 国产成人aaaa| 精品国产伦一区二区三区观看方式 | 欧美亚洲动漫另类| 中文字幕一区二区三区四区| 国产毛片精品视频| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产aⅴ天堂久久| 在线免费观看一区| 亚洲美腿欧美偷拍| 成人不卡免费av| 亚洲欧美在线视频| 91性感美女视频| 亚洲男人电影天堂|