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

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

?? ican_interface.c

?? 可自行修改移植的CAN應用層協議棧
?? C
字號:
#include  "config.h"

extern  INT8U deviceinf[];
extern  iCANSLV iCANdeviceList[];
extern  ican_respond(INT8U *p,iCANSLV *p_iCANSLV);
/************************數組復制函數*************************************
 作者:張森
 日期:2008年4月1日
 p1 指向源指針
 p2 指向目標指針
 d_long 復制長度
**************************************************************************/
void array_copy(INT8U *p1,INT8U *p2,INT8U d_long)
{
for(;d_long>0;d_long--)
	{
	 *p2=*p1;
	 p1++;
	 p2++;
	}
}
/************************iCAN數據格式與芯片空間格式轉換(發送)****************
 作者:張森
 日期:2008年4月2日
 SrcMACID	源地址
 DestMACID	目標地址
 iCAN_ACK	請求響應
 FunCID	功能ID
 SourceID 	資源ID
 segFlag	分段標志
 p			數據指針
 D_long	數據長度(*p 長度)
 注意:不同的芯片CAN報文在寄存器的映射不同
**************************************************************************/
void ican_send_interface(SrcMACID,DestMACID,iCAN_ACK,FunCID,SourceID,segFlag,p,D_long)
INT8U SrcMACID;
INT8U DestMACID;
INT8U iCAN_ACK;
INT8U FunCID;
INT8U SourceID;
INT8U segFlag;
INT8U *p;
INT8U D_long;
{
stcTxBUF CTBuf;
   CTBuf.TxFrameInfo.Bits.PRIO_BIT=0;	//緩沖區數據發送優先級的值
   CTBuf.TxFrameInfo.Bits.RTR_BIT=0;//遠程幀、數據幀辨別位(RTR=0數據幀,RTR=1遠程幀)
   CTBuf.TxFrameInfo.Bits.FF_BIT=1;	//擴展幀、標準幀辨別位(FF=0標準幀,FF=1擴展幀)
   CTBuf.TxFrameInfo.Bits.DLC_BIT=D_long+1;//發送數據長度
  
   CTBuf.TxCANID.FrameFm.stcICAN.SourceID =SourceID;
   CTBuf.TxCANID.FrameFm.stcICAN.FuncID =FunCID;
   CTBuf.TxCANID.FrameFm.stcICAN.ACK =iCAN_ACK;
   CTBuf.TxCANID.FrameFm.stcICAN.DestMACID  =DestMACID;
   CTBuf.TxCANID.FrameFm.stcICAN.SrcMACID =SrcMACID;
   
   CTBuf.CANTDA.Bits.Data1_BIT=segFlag; 
   CTBuf.CANTDA.Bits.Data2_BIT=p[0];
   CTBuf.CANTDA.Bits.Data3_BIT=p[1];
   CTBuf.CANTDA.Bits.Data4_BIT=p[2];
   CTBuf.CANTDB.Bits.Data1_BIT=p[3];
   CTBuf.CANTDB.Bits.Data2_BIT=p[4];
   CTBuf.CANTDB.Bits.Data3_BIT=p[5];
   CTBuf.CANTDB.Bits.Data4_BIT=p[6];
   CANSendData(CAN1,0,&CTBuf);

}
/************************iCAN報文分段發送函數*******************************
 作者:張森
 日期:2008年4月2日
 DestMACID	目標地址
 iCAN_ACK	請求響應
 FunCID	功能ID
 SourceID 	資源ID
 p			數據指針
 D_long	數據長度(*p 長度) 0<D_long<65  程序不判斷<0的情況 如需要請自行修改
**************************************************************************/
void ican_send(INT8U DestMACID,INT8U iCAN_ACK,INT8U FunCID,INT8U SourceID,INT8U *p,char D_long)
{
INT8U segFlag=0,i,l;

	if(D_long<8)
	{
	ican_send_interface(deviceinf[0x0e],DestMACID,iCAN_ACK,FunCID,SourceID,segFlag,p,D_long);
	}
	else
	{
	 segFlag=0x40;
	 l=7;
	 
	for(i=0;D_long>0;)
	   {
	   	
	   if(D_long<8)
	   		{
				l=D_long;
				segFlag=0xc0|i;
		//		D_long=0;
		 		ican_send_interface(deviceinf[0x0e],DestMACID,iCAN_ACK,FunCID,SourceID,segFlag,p,l);
		 		break;
			}
		
	    ican_send_interface(deviceinf[0x0e],DestMACID,iCAN_ACK,FunCID,SourceID,segFlag,p,l);	
	 
		i++;
		segFlag=0x80|i;
		D_long=D_long-7; 
		p=p+7;
		
		}
	}

}
/************************尋找對應從站緩沖區********************************
 作者:張森
 日期:2008年4月1日
 SrcMAC_id 要搜索的ID
 p  	   結構體指針
**************************************************************************/
void *find_id_buff(INT8U SrcMAC_id,iCANSLV *p)
{ INT8U i;
	for(i=0;i<ICAN_SLV_NUM+1;i++)
	{if(p->SlvID==SrcMAC_id)
		{
		return  p;
		}
	   p++;
	}
	return (NULL);

}
/************************iCAN數據格式與芯片空間格式轉換(接收)*********************
 作者:張森
 日期:2008年4月1日
 
 
**************************************************************************/
void ican_rec_interface(P_stcRxBUF rx_Buf)
{

ReadCanRxBuf(CAN1,rx_Buf);
RelCanRecBuf(CAN1);//釋放接收緩沖區
}
/************************iCAN接收數據處理******************************
 作者:張森
 日期:2008年4月3日
 返回值:0x00 接收成功
 		 0x01 動態內存空間不足
 		 0x02 不支持此從站ID
 		 0x03 消息隊列已滿
 		 0x04 分段錯誤	
 		 0x05 非法數據格式
**************************************************************************/
INT8U ican_rec()
{
stcRxBUF ican_rec_buf;
iCANSLV *p_sla_buf;

INT8U ican_rec_transfrom_buf[13],flag_char_buf;
ican_rec_interface(&ican_rec_buf);

#if ican_soft_filter   //軟件濾波宏控制 

if(ican_rec_buf.RxCANID.FrameFm.stcICAN.DestMACID==deviceinf[0x0e])//&&(從站信息列表||)在此添加從站信息比對
{

#endif

if(ican_rec_buf.CANRcvFS.Bits.FF_BIT==1)//擴展數據幀
{

flag_char_buf=ican_rec_buf.CANRDA.Bits.Data1_BIT;
	
	if(flag_char_buf==0)//沒有分段
		{
/*--------------------------------------------非分段數據處理---------------------------------------------------*/

			#if	ican_auto_search_slave_list			//自動搜獲從站列表中相應的從站空間位置返回從站列表位置
				p_sla_buf=find_id_buff(ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID,iCANdeviceList);
					if(p_sla_buf==NULL)
					{
						return 0x02;
	
					}
			#else
				p_sla_buf=&iCANdeviceList[ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID];
			#endif
			/***************************格式整理******************************************/
			ican_rec_transfrom_buf[0]=0x01;//0xff;//標志此消息是數據信息
			ican_rec_transfrom_buf[1]=ican_rec_buf.CANRcvFS.Bits.DLC_BIT-1; //數據長度為 CAN數據區內容減去減去分段標號長度
			ican_rec_transfrom_buf[2]=ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID;//源地址
			ican_rec_transfrom_buf[3]=ican_rec_buf.RxCANID.FrameFm.stcICAN.ACK;//響應位
			ican_rec_transfrom_buf[4]=ican_rec_buf.RxCANID.FrameFm.stcICAN.FuncID;//功能號
			ican_rec_transfrom_buf[5]=ican_rec_buf.RxCANID.FrameFm.stcICAN.SourceID;//資源ID號
			ican_rec_transfrom_buf[6]=ican_rec_buf.CANRDA.Bits.Data2_BIT;//數據內容1
			ican_rec_transfrom_buf[7]=ican_rec_buf.CANRDA.Bits.Data3_BIT;//數據內容2
			ican_rec_transfrom_buf[8]=ican_rec_buf.CANRDA.Bits.Data4_BIT;//數據內容3
			ican_rec_transfrom_buf[9]=ican_rec_buf.CANRDB.Bits.Data1_BIT;//數據內容4
			ican_rec_transfrom_buf[10]=ican_rec_buf.CANRDB.Bits.Data2_BIT;//數據內容5
			ican_rec_transfrom_buf[11]=ican_rec_buf.CANRDB.Bits.Data3_BIT;//數據內容6
			ican_rec_transfrom_buf[12]=ican_rec_buf.CANRDB.Bits.Data4_BIT;//數據內容7
			/***************************格式整理結束****************************************/
			//UART0_SendNByte(ican_rec_transfrom_buf,ican_rec_transfrom_buf[1]+6);
			ican_respond(ican_rec_transfrom_buf,p_sla_buf);
			return 0x00;
/*------------------------------------以上是非分段處理-----------------------------------------------------------*/
	}
	else //收到為分段幀
	{
			#if	ican_auto_search_slave_list			//自動搜獲從站列表中相應的從站空間位置返回從站列表位置
				p_sla_buf=find_id_buff(ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID,iCANdeviceList);
					if(p_sla_buf==NULL)
					{
						return 0x02;
					}
			#else
				p_sla_buf=&iCANdeviceList[ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID];
			#endif
			/***************************格式整理******************************/
			ican_rec_transfrom_buf[0]=0x01;//0xff;
			ican_rec_transfrom_buf[1]=ican_rec_buf.CANRcvFS.Bits.DLC_BIT-1; //數據長度為CAN數據區內容 -分段標號
			ican_rec_transfrom_buf[2]=ican_rec_buf.RxCANID.FrameFm.stcICAN.SrcMACID;//源地址
			ican_rec_transfrom_buf[3]=ican_rec_buf.RxCANID.FrameFm.stcICAN.ACK;//響應位
			ican_rec_transfrom_buf[4]=ican_rec_buf.RxCANID.FrameFm.stcICAN.FuncID;//功能號
			ican_rec_transfrom_buf[5]=ican_rec_buf.RxCANID.FrameFm.stcICAN.SourceID;//資源ID號
			ican_rec_transfrom_buf[6]=ican_rec_buf.CANRDA.Bits.Data2_BIT;//數據內容1
			ican_rec_transfrom_buf[7]=ican_rec_buf.CANRDA.Bits.Data3_BIT;//數據內容2
			ican_rec_transfrom_buf[8]=ican_rec_buf.CANRDA.Bits.Data4_BIT;//數據內容3
			ican_rec_transfrom_buf[9]=ican_rec_buf.CANRDB.Bits.Data1_BIT;//數據內容4
			ican_rec_transfrom_buf[10]=ican_rec_buf.CANRDB.Bits.Data2_BIT;//數據內容5
			ican_rec_transfrom_buf[11]=ican_rec_buf.CANRDB.Bits.Data3_BIT;//數據內容6
			ican_rec_transfrom_buf[12]=ican_rec_buf.CANRDB.Bits.Data4_BIT;//數據內容7
		//	ican_rec_transfrom_buf[13]=ican_rec_buf.CANRDA.Bits.Data1_BIT;
			/****************************************************************************/
		
			if((flag_char_buf & 0xc0)==0x40)//第一分段幀
			{
				if((flag_char_buf & 0x3f)!=0x00)//分段嗎不為零 分段錯誤
				{
					return 0x04;	
				}

				array_copy(ican_rec_transfrom_buf,(*p_sla_buf).BUF,13);//放入從機分段緩沖區	
			}

			if(flag_char_buf>0x80)//后段數據
			{
				if((flag_char_buf & 0x3f)*7 !=(*p_sla_buf).BUF[1])//如果分段不是比上段大1
				{
				//UART0_SendNByte(&(*p_sla_buf).BUF[1],1);
					return 0x04;	
				}
				array_copy(&ican_rec_transfrom_buf[6],&(*p_sla_buf).BUF[(*p_sla_buf).BUF[1]+6],ican_rec_transfrom_buf[1]);//考入對應的位置
				(*p_sla_buf).BUF[1]=(*p_sla_buf).BUF[1]+ican_rec_transfrom_buf[1];//更改存入的數據長度
				if(flag_char_buf>0xc0)//最后分段
				{
	
					ican_respond((*p_sla_buf).BUF,p_sla_buf);
					return 0x00;
				}
		
			}
		}

}

#if ican_soft_filter   //軟件濾波宏控制 
}//控制宏
#endif
return 0x05;
}
/************************iCAN濾波校驗初始化******************************
 作者:張森
 日期:2008年4月3日

**************************************************************************/

void ican_master_af(INT8U myid,INT8U chna)
{
	INT32U		i,u=0;
	uCANAFMR 	afmr;
	INT32U 		bakAfmr;
	
	ican_stcAF_EFF_CELL mask = {-1,-1,-1,-1};
	ican_stcAF_EFF_CELL *pU32= (ican_stcAF_EFF_CELL  *)((INT32U)CANAFRAM_GADR + (INT32U)(CANEFF_GRP_sa)) ;
	afmr.Word = CANAFMR;
	bakAfmr = afmr.Word;
	afmr.Bits.AccBP_BIT = 1;
	CANAFMR = afmr.Word;
	
	for(i=0;i<((CANENDofTable- CANEFF_GRP_sa)/4);i++)
	{
		*(pU32 + i) = mask;			// disable all AF cell
	}

	for(i=0;i<63;i++)
	{		
			(*(pU32 + u)).myid = myid;
			(*(pU32 + u)).otherid=i;
			(*(pU32 + u)).other=0;
			(*(pU32 + u)).RSV_bit=chna;
							// set filter cell
			u++;
			(*(pU32 + u)).myid = myid;
			(*(pU32 + u)).otherid=i;
			(*(pU32 + u)).other=-1;	
			(*(pU32 + u)).RSV_bit=chna;	
			u++;
	}
	
	CANAFMR = bakAfmr;
	

}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区不卡视频| 成人av在线影院| 蜜桃精品在线观看| 国产精品资源在线观看| 91亚洲男人天堂| 欧美精品粉嫩高潮一区二区| 精品久久五月天| 亚洲精品视频在线观看网站| 日本午夜精品视频在线观看| 成人av在线影院| 欧美一区二区三区视频在线| 国产片一区二区三区| 亚洲午夜精品一区二区三区他趣| 久久国产综合精品| 色综合一个色综合| 精品成人免费观看| 一区二区三区精品在线| 精品一区二区三区免费播放| www.亚洲激情.com| 精品精品欲导航| 一区二区三区欧美视频| 国产老女人精品毛片久久| 欧美在线你懂的| 国产精品久久久久久久久久免费看 | 亚洲女同ⅹxx女同tv| 日本91福利区| 91福利资源站| 亚洲国产成人在线| 久久se这里有精品| 欧美日韩国产在线观看| 中文字幕亚洲一区二区av在线| 日本成人在线视频网站| 欧美在线一二三四区| 亚洲视频在线观看一区| 国产不卡视频在线观看| 日韩欧美中文字幕一区| 亚洲日本在线看| 国产激情91久久精品导航| 中文字幕在线观看一区| 国产一区二区三区免费观看| 91精品国产色综合久久不卡蜜臀 | 亚洲人妖av一区二区| 国产精品一二三区| 欧美成va人片在线观看| 日韩精品亚洲一区| 色婷婷国产精品| 亚洲男人的天堂在线aⅴ视频| 国产成人免费网站| 国产欧美精品一区aⅴ影院 | 91.xcao| 香蕉久久夜色精品国产使用方法 | 国产精品一卡二卡在线观看| 日韩无一区二区| 奇米色一区二区| 欧美日韩成人综合在线一区二区| 一区二区三区资源| 欧美综合在线视频| 亚洲欧美偷拍另类a∨色屁股| a美女胸又www黄视频久久| 中文字幕欧美三区| 粉嫩aⅴ一区二区三区四区五区 | 91久久精品日日躁夜夜躁欧美| 欧美激情资源网| 99久久综合精品| 亚洲视频1区2区| 大美女一区二区三区| 亚洲人精品一区| 欧美性色综合网| 日本伊人精品一区二区三区观看方式| 欧美精品自拍偷拍动漫精品| 蜜臀99久久精品久久久久久软件| 日韩精品一区二区三区蜜臀| 日韩精品电影一区亚洲| 精品乱人伦小说| 成人a免费在线看| 一区二区欧美国产| 在线精品视频免费播放| 久久国产婷婷国产香蕉| 中文字幕国产精品一区二区| 色视频欧美一区二区三区| 亚洲一区二区五区| 国产精品久久久久久户外露出| 色综合天天视频在线观看| 亚洲国产wwwccc36天堂| 日韩美女一区二区三区| 成人丝袜视频网| 视频一区中文字幕| 久久久久久麻豆| 在线观看国产精品网站| 久国产精品韩国三级视频| 国产日韩欧美制服另类| 欧美亚洲国产一区二区三区| 国产中文字幕一区| 亚洲一区二区高清| 久久久久久影视| 欧美日韩国产成人在线免费| 国产不卡一区视频| 日韩高清国产一区在线| 国产日韩精品一区二区三区在线| 欧美三片在线视频观看 | 亚洲国产精品天堂| 欧美绝品在线观看成人午夜影视| 激情文学综合网| 一二三四社区欧美黄| 久久久久久综合| 欧美精品一卡二卡| 成人av免费在线| 乱一区二区av| 亚洲六月丁香色婷婷综合久久| 91精品国产综合久久精品app | 国产午夜亚洲精品理论片色戒| 色吧成人激情小说| 国产一区美女在线| 亚洲成人动漫一区| 亚洲国产精品t66y| 欧美一级精品在线| 欧美亚洲国产一区二区三区va| 福利视频网站一区二区三区| 久久精品999| 日本在线不卡一区| 91香蕉视频mp4| av在线不卡观看免费观看| a在线播放不卡| 在线观看一区日韩| 欧美精品xxxxbbbb| 欧美一级高清大全免费观看| 精品国产91洋老外米糕| 久久久欧美精品sm网站 | 欧美日本免费一区二区三区| 欧美日韩在线播放一区| 欧美精品在线一区二区三区| 欧美肥妇毛茸茸| 日韩精品一区国产麻豆| 久久久久久**毛片大全| 国产精品美女一区二区| 亚洲精品第1页| 日本午夜精品一区二区三区电影| 免费高清不卡av| 岛国精品在线播放| 欧美自拍丝袜亚洲| 欧美电影免费观看高清完整版在 | 国内精品伊人久久久久av一坑| 国产91清纯白嫩初高中在线观看| k8久久久一区二区三区| 欧美日韩一区二区在线视频| 日韩午夜中文字幕| 国产精品国产自产拍高清av| 午夜精品国产更新| 国产酒店精品激情| 欧美性色黄大片手机版| 欧美电视剧在线看免费| 中文字幕一区视频| 日韩不卡一区二区| av资源站一区| 日韩免费视频一区二区| 亚洲视频每日更新| 精品在线观看视频| 欧美在线免费观看亚洲| 久久综合成人精品亚洲另类欧美| 伊人色综合久久天天| 激情图片小说一区| 欧日韩精品视频| 国产精品视频九色porn| 日韩中文字幕亚洲一区二区va在线| 高清在线不卡av| 欧美一区二区视频网站| 亚洲欧洲日韩一区二区三区| 毛片av一区二区三区| 在线一区二区观看| 国产三级精品三级| 喷水一区二区三区| 欧美中文字幕不卡| 国产精品久久久久桃色tv| 看片网站欧美日韩| 欧美精品久久久久久久久老牛影院 | 亚洲日本一区二区三区| 国产一区二区在线免费观看| 欧美精品久久久久久久久老牛影院| 亚洲色图在线播放| 国产成人免费视频| 亚洲精品一区二区精华| 日韩激情视频网站| 欧美日韩亚洲国产综合| 亚洲精品视频免费观看| 国产**成人网毛片九色 | 蜜臀av一区二区在线免费观看 | 国产成人高清在线| 亚洲国产乱码最新视频| 91偷拍与自偷拍精品| 欧美国产日韩精品免费观看| 国内偷窥港台综合视频在线播放| 91精品欧美福利在线观看| 亚洲成人福利片| 欧美狂野另类xxxxoooo| 亚洲成人动漫一区| 欧美精品粉嫩高潮一区二区| 午夜精品国产更新| 91麻豆精品国产91久久久久| 日韩av电影免费观看高清完整版在线观看| 欧美性生活大片视频|