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

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

?? sja1000.c

?? 在samsung2410處理器上can實現通信的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
****************************************Copyright (c)**************************************************
**                                  廣州致遠電子有限公司
**                                        CAN開發組 
**                                 http://www.zyinside.com
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名:	SJA1000.c
**創   建   人:	滕欣欣
**創 建  日 期: 2005-04-13
**描        述:	SJA1000 CAN控制器操作函數定義
**最后修改日期:	2006-03-03
**原 始  版 本:	v1.0
**最 后  版 本:	v1.2
**--------------歷史修改--------------------------------------------------------------------------------
**修   改   人:
**修 改  日 期:
**修 改  原 因:
**修 改  版 本:
********************************************************************************************************
*/
#include "SJA1000.h"
#include "config.h"

extern stcSJA1000_BufInfo SJA1000_RxBuf;
/*
********************************************************************************************************************
**函數原型		:  	BOOL SJA_SoftRst(BOOL bIsRst)
**參數說明		:	bIsRst	->	TURE	SJA1000進入軟件復位模式	
**				:				FALSE	SJA1000退出軟件復位模式
**返回值		:	TURE	->	成功完成相應設置
**				:	FALSE	->	設置失敗
**說	明		:	
********************************************************************************************************************
*/
BOOL SJA_SoftRst(BOOL IsRst)
{
	uRsgMod ModTemp;
	INT8U Statu;
	
	ModTemp.Byte = Read_SJA1000(MOD)&0x1F;
	ModTemp.Bits.RM = (TRUE == IsRst)? 1:0;
	Write_SJA1000(ModTemp.Byte, MOD);
	
	ModTemp.Byte = Read_SJA1000(MOD)&0x1F;
	Statu = (ModTemp.Bits.RM == 1)? TRUE:FALSE;
	
	return (Statu == IsRst)? TRUE:FALSE;
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetModeReg(INT8U Val, BOOL bIsEn)
**參數說明		:	Val		->	設置模式值	MOD_LOM			只聽模式
**				:							MOD_STM			自測試模式
**				:							MOD_AFM_SIG		單濾波方式
**				:							MOD_AFM_DOB		雙濾波方式
**				:	bIsEn	->	設定方式	TRUE			使能設定
**				;							FALSE			禁能設定
**返回值		:	TURE	->	成功完成相應設置
**				:	FALSE	->	設置失敗	
**說	明		:	該函數設定SJA1000模式,必須在軟件復位模式中調用,否則失敗,模式值可并聯使用
********************************************************************************************************************
*/
BOOL SetModeReg(INT8U Val, BOOL bIsEn)
{
	uRsgMod ModTemp;
	ModTemp.Byte = Read_SJA1000(MOD)&0x1F;
	if(ModTemp.Bits.RM)
	{
		if(Val&MOD_LOM)
		{
			ModTemp.Bits.LOM = (TRUE == bIsEn)? 1:0;
		}
		if(Val&MOD_STM)
		{
			ModTemp.Bits.STM = (TRUE == bIsEn)? 1:0;
		}
		if(Val&MOD_AFM_SIG)
		{
			ModTemp.Bits.AFM = 1;
		}
		if(Val&MOD_AFM_DOB)
		{
			ModTemp.Bits.AFM = 0;
		}
	}
	else
		return FALSE;
	Write_SJA1000(ModTemp.Byte,MOD);
	if(ModTemp.Byte == (Read_SJA1000(MOD)&0x1F))
	{
		return TRUE;
	}
	else
		return FALSE;
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL EnterSleepMod(BOOL IsEn)
**參數說明		:	IsEn	->	SJA1000請求進入復位模式
**返回值		:	TURE	->	成功完成相應設置
**				:	FALSE	->	設置失敗	
**說	明		:	該函數必須在工作模式下調用,否則失敗
********************************************************************************************************************
*/
BOOL EnterSleepMod(BOOL IsEn)
{
	uRsgMod ModTemp;
	INT8U Statu;
	ModTemp.Byte = Read_SJA1000(MOD)&0x1F;
	if(ModTemp.Bits.RM) return FALSE;
	ModTemp.Bits.SM = (TRUE == IsEn)? 1:0;
	Write_SJA1000(ModTemp.Byte,MOD);
	ModTemp.Byte = Read_SJA1000(MOD)&0x1F;
	Statu = (ModTemp.Bits.SM == 1)? TRUE:FALSE;
	return (Statu == IsEn)? TRUE:FALSE;
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetCommand(INT8U Cmd)
**參數說明		:	Cmd		->	命令字	CMR_NOM_SD	正常發送
**				:						CMR_SIG_SD	單次發送
**				:						CMR_SLF_SD	自發自收
**				:						CMR_CL_BUF	釋放接收緩緩沖區
**				:						CMR_CL_DATA	清除數據溢出狀態
**返回值		:	無
**說	明		:	每次調用該函數只能發送一條命令值
********************************************************************************************************************
*/
void SetCommand(INT8U Cmd)
{
	uRsgCmd CMRTemp;
	CMRTemp.Byte = 0;
	switch(Cmd) 
	{
		case CMR_SIG_SD:
			CMRTemp.Bits.AT = 1;
		case CMR_NOM_SD:
			if(1 == (Read_SJA1000(MOD)&0x04))
			{
				while(TRUE != SJA_SoftRst(TRUE));
				while(TRUE != SetModeReg(MOD_STM,FALSE));
				while(TRUE != SJA_SoftRst(FALSE));
			}
			CMRTemp.Bits.TR = 1;
			break;
		case CMR_SLF_SD:
			if(0 == (Read_SJA1000(MOD)&0x04))
			{
				while(TRUE != SJA_SoftRst(TRUE));
				while(TRUE != SetModeReg(MOD_STM,TRUE));
				while(TRUE != SJA_SoftRst(FALSE));
			}
			CMRTemp.Bits.SRR = 1;
			CMRTemp.Bits.AT = 1;
			break;
		case CMR_CL_BUF:
			CMRTemp.Bits.RR = 1;
			break;
		case CMR_CL_DATA:
			CMRTemp.Bits.CDO = 1;
			break;
		default:
			break;
	}
	Write_SJA1000(CMRTemp.Byte,CMR);
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetInterrupt(INT8U Val, BOOL IsEn)
**參數說明		:	Val		->	中斷值	IER_RC--IER_BE
**				:	IsEn	->	是否使能該中斷
**返回值		:	
**說	明		:	中斷值可并聯使用,全部使能,禁能中斷時可使用 IER_ALL
********************************************************************************************************************
*/
BOOL SetInterrupt(INT8U Val, BOOL IsEn)
{
	INT8U IntVal;
	INT8U temp;
	if(TRUE == IsEn)
	{
		Write_SJA1000(Val,IER);
		temp = Read_SJA1000(IER);
		if(temp == Val)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}
	else
	{
		IntVal = Read_SJA1000(IER);
		IntVal &= ~Val;
		Write_SJA1000(IntVal,IER);
		return (IntVal == Read_SJA1000(IER))? TRUE:FALSE;
	}
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetBaudRate(INT16U BaudVal)
**參數說明		:	BaudVal		->	波特率值,由 定時器0<<8|定時器1 組成
**返回值		:	
**說	明		:	該函必須在軟件復位模式下調用
********************************************************************************************************************
*/
BOOL SetBaudRate(INT16U BaudVal)
{
	INT16U h, l;
	if(1 == (Read_SJA1000(MOD)&0x01))
	{
		Write_SJA1000((INT8U)(BaudVal>>8),BTR0);
		Write_SJA1000((INT8U)(BaudVal&0xFF),BTR1);
		
		h = Read_SJA1000(BTR0) << 8;
		l = Read_SJA1000(BTR1);
		
		if(BaudVal == (h + l))
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}
	else
		return FALSE;

}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetOutPutMod(INT8U Val)
**參數說明		:	Val		->	輸出模式值
**返回值		:	
**說	明		:	通常設為0x1A
********************************************************************************************************************
*/
BOOL SetOutPutMod(INT8U Val)
{
	Write_SJA1000(Val,OCR);
	return (Val == Read_SJA1000(OCR))? TRUE:FALSE;
}
/*
********************************************************************************************************************
**函數原型		:  	BOOL SetClkDiv(INT8U CAN_Mod,BOOL bRxINTEn,BOOL bClkOFF,INT8U Div)
**參數說明		:	CAN_Mod		->	CAN模式值	BAIS_CAN
**				:								PELI_CAN
**				:	bRxINTEn	->	是否使用Tx1引腳作為接收中斷指示
**				:	bClkOFF		->	是否使用頻率輸出引腳
**				:	Div			->	0-7,表示(Val+1)*2分頻
**返回值		:	
**說	明		:	該函數必須在軟件復位模式下調用
********************************************************************************************************************
*/
BOOL SetClkDiv(INT8U CAN_Mod,BOOL bRxINTEn,BOOL bClkOFF,INT8U Div)
{
	INT8U CDRTemp = 0;
	INT8U RxINTTemp = (bRxINTEn == TRUE)? 1:0;
	INT8U ClkOffTemp = (bClkOFF == TRUE)? 1:0;
	if(1 == (Read_SJA1000(MOD)&0x01))
	{
		CDRTemp = CAN_Mod<<7|0x01<<6|RxINTTemp<<5|ClkOffTemp<<3|Div;
		Write_SJA1000(CDRTemp,CDR);
	}
	else
		return FALSE;
	return ((CDRTemp == Read_SJA1000(CDR))? TRUE:FALSE);
}
/*
********************************************************************************************************************
**函數原型		:  	void SetTxBuf(stcSJA1000_TxInfo *pTxInfo)
**參數說明		:	pTxInfo		->	發送數據的結構體指針
**返回值		:	
**說	明		:	調用該函數寫入欲發送的數據
********************************************************************************************************************
*/
void SetTxBuf(stcSJA1000_BufInfo *pTxInfo)
{
	INT8U	i;
	INT32U	IDTemp;
	Write_SJA1000(pTxInfo->FrIf.Byte,TXBUF);
	if(1 == pTxInfo->FrIf.Bits.FF)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美成人一区二区三区| 欧美天堂一区二区三区| 久久亚洲影视婷婷| 国产精品538一区二区在线| 久久精品人人爽人人爽| 日本乱人伦aⅴ精品| 久久国产精品无码网站| 亚洲欧美aⅴ...| 自拍偷拍欧美激情| 久久伊99综合婷婷久久伊| 久久天堂av综合合色蜜桃网| 久久综合资源网| 国产欧美精品一区二区色综合| 欧美性色黄大片| 欧美精品三级日韩久久| 成人18视频在线播放| 日本欧美肥老太交大片| 国产精品欧美精品| 日韩亚洲欧美在线| 在线亚洲高清视频| 成人av免费在线观看| 色视频欧美一区二区三区| 国产激情偷乱视频一区二区三区| 日本欧美韩国一区三区| 国内精品不卡在线| 日韩成人精品在线观看| 国产制服丝袜一区| 99久久精品国产网站| 韩国视频一区二区| 菠萝蜜视频在线观看一区| 色视频成人在线观看免| 日韩一区二区精品葵司在线| 国产午夜三级一区二区三| 亚洲丝袜制服诱惑| 日韩电影在线一区| 成人毛片在线观看| 成人免费毛片a| 欧美性生活大片视频| www久久久久| 怡红院av一区二区三区| 亚洲免费观看高清完整版在线 | 免费在线观看不卡| 亚洲成人免费视频| 成人欧美一区二区三区黑人麻豆| 久久久www成人免费毛片麻豆| 日韩一卡二卡三卡国产欧美| 国产日产欧产精品推荐色| 亚洲一区日韩精品中文字幕| 亚洲激情一二三区| 国产九色精品成人porny| 欧美主播一区二区三区美女| 久久精品亚洲乱码伦伦中文| 一区二区成人在线| 亚洲18影院在线观看| 国产成人免费视频网站高清观看视频| 欧美无砖专区一中文字| 国产欧美精品日韩区二区麻豆天美| 亚洲丝袜另类动漫二区| 狠狠色丁香婷综合久久| 欧美日韩一卡二卡三卡| 欧美一激情一区二区三区| 亚洲视频中文字幕| 国产伦精品一区二区三区免费迷| 国产精品影视在线观看| 欧美精三区欧美精三区| 亚洲精品中文在线| 国产成人精品网址| 91精品国产色综合久久| 精品国内片67194| 国产片一区二区三区| 青娱乐精品视频| 欧美性生活影院| 亚洲日韩欧美一区二区在线| 国产伦精品一区二区三区在线观看| 欧美日韩国产电影| 日韩精品中文字幕一区二区三区| 精品国产91乱码一区二区三区| 一区二区三区视频在线看| 成人高清伦理免费影院在线观看| 精品国产青草久久久久福利| 日韩高清国产一区在线| 欧美三级午夜理伦三级中视频| 亚洲国产精品二十页| 亚洲第一狼人社区| 在线观看亚洲专区| 亚洲欧洲在线观看av| 国产精品亚洲人在线观看| 精品久久久久久最新网址| 亚洲色图一区二区三区| 成人黄色软件下载| 国产精品免费丝袜| 国产suv精品一区二区883| 欧美日韩国产小视频在线观看| 亚洲欧洲精品成人久久奇米网| 国产成人av资源| 日本一区二区三区免费乱视频 | 欧美日本在线视频| 一区二区三区资源| 欧美性videosxxxxx| 一区二区成人在线观看| 欧美亚洲综合另类| 亚洲午夜精品久久久久久久久| 国产一区二区三区香蕉| 欧美精品一区二区不卡 | 在线视频一区二区免费| 亚洲国产一区二区三区| 69精品人人人人| 国产精品免费aⅴ片在线观看| 国产91精品露脸国语对白| 国产精品网站在线观看| 91视频国产观看| 精品成人一区二区三区四区| 国产乱码精品一区二区三区五月婷| 26uuu国产一区二区三区| 国产成人av电影在线| 国产精品久久影院| 国产精品亚洲成人| 国产精品福利一区二区三区| 色婷婷狠狠综合| 亚洲国产精品视频| 日韩欧美在线一区二区三区| 精品亚洲porn| 911国产精品| 韩国av一区二区三区在线观看| 久久九九国产精品| 91美女福利视频| 欧美日韩中字一区| 日本精品一级二级| 亚洲欧美乱综合| 亚洲日本va午夜在线影院| 欧美自拍丝袜亚洲| 日韩二区三区四区| 国产欧美日韩精品在线| 91美女福利视频| 秋霞午夜av一区二区三区| 久久嫩草精品久久久久| 色综合中文字幕国产| 91精品国产综合久久香蕉麻豆 | 成人性生交大片免费看视频在线| 中文字幕日韩一区二区| 91精品国模一区二区三区| 粉嫩欧美一区二区三区高清影视| 国产精品久久久久久久午夜片| 欧美日韩日本视频| 国产经典欧美精品| 亚州成人在线电影| 久久久精品一品道一区| 欧美午夜影院一区| 国产精品中文有码| 亚洲综合免费观看高清完整版| 欧美成人综合网站| 一本高清dvd不卡在线观看| 精品一区二区三区久久| 亚洲欧美日韩国产综合| 2023国产精品| 欧美怡红院视频| 国产成人三级在线观看| 天堂va蜜桃一区二区三区 | 日韩一区二区三区视频在线 | 99精品视频一区二区三区| 免费精品视频在线| 伊人一区二区三区| 国产免费观看久久| 欧美一区二区三区免费观看视频| 99视频热这里只有精品免费| 中文字幕一区二区三中文字幕 | 日韩极品在线观看| 亚洲欧洲美洲综合色网| 精品福利在线导航| 欧美日韩黄色一区二区| 91麻豆国产香蕉久久精品| 国产黄色精品视频| 另类小说图片综合网| 爽爽淫人综合网网站| 亚洲欧美一区二区三区极速播放| 久久麻豆一区二区| 日韩一级完整毛片| 欧美高清视频不卡网| 91精彩视频在线观看| 成人激情午夜影院| 国产精品中文字幕一区二区三区| 日本不卡一二三区黄网| 亚洲大片精品永久免费| 一区二区三区免费网站| 亚洲欧美自拍偷拍| 国产精品久久久久久久岛一牛影视| 精品国产乱码久久久久久闺蜜 | 中文字幕欧美激情一区| 国产色产综合色产在线视频| 亚洲精品在线网站| 日韩精品中文字幕一区二区三区| 欧美精品欧美精品系列| 欧美在线观看一二区| 欧美中文字幕不卡| 在线观看一区二区视频| 91福利在线免费观看| 91蜜桃传媒精品久久久一区二区| www.综合网.com| www.亚洲国产| av电影天堂一区二区在线|