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

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

?? canapp.c

?? 我做的用lpc2119實現的變電站隔刀動作電流波形采樣計算數據上傳程序
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               河南恩湃電力技術有限公司
**                                     測 控 部
**                                        
**
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
**	文   件  	名:	CANAPP.C
** 	版  		本:	
** 	日		期:	
**	描		述:	CAN模塊應用接口函數說明文件。該文件中的函數,如果用戶有特別的需要,可以進行修改。
********************************************************************************************************/
#define		_CANAPP_GLOBAL_
#include	"config.h"
extern void AFSetMode(UINT32 mode);
extern UINT32 AFBuildLUT( UINT32 FCAN_nCell_Num,UINT32 SFF_INDV_nCell_Num,
				   UINT32 SFF_GRP_nCell_Num,UINT32 EFF_INDV_nCell_Num,
				   UINT32 EFF_GRP_nCell_Num);
extern UINT32 AFInitSFFIndvTab(stcAF_SFF_CELL *pTab,UINT32 nCell);
extern uint8 Locoal_Addr;
//#define SFF_INDV_nCell 1
#define SFF_GRP_nCell 1
/*
**************************************************************************************
**	定義并初始化驗收過濾ID數組
**************************************************************************************
*/
#if AF_REG_ENABLE
	#if SFF_INDV_nCell
	stcAF_SFF_CELL	sffIndvTab[] = {56,0,0,1,56,0,0,1};
	#endif
	
	#if SFF_GRP_nCell			   
	stcAF_SFF_CELL 	sffGrpTab[] = {56,0,0,1,56,0,0,1};
	#endif
	
	#if EFF_INDV_nCell
	stcAF_EFF_CELL	effIndvTab[]= {}; 
	#endif
	
	#if EFF_GRP_nCell
	stcAF_EFF_CELL	effGrpTab[] = {};
	#endif
#endif
/*
***********************************************************************************************************
**函數原型		:  	void	CANIntPrg(void)
**參數說明		:  	無
**返回值		:	無	
**說	明		:	CAN控制器中斷處理函數
************************************************************************************************************/
__irq		void		CANIntPrg(void)
{
	UINT32 	j;
	uCANICR k;
	if(CANLUTerr.Word != 0 )	//LUT Error Program
	{
		//add or modify code
		j=CANLUTerrAd.Word;	
	}
	for(j=0;j<CAN_MAX_NUM;j++)
	{
		k=CANICR(j);
		if(k.Bits.RI_BIT != 0)
		{
			//add code
			WriteCANRcvCyBuf(j);
			//UART1_SendByte(0x08);

		}
		if(k.Bits.TI1_BIT != 0)
		{
			//add code
		}
		if(k.Bits.TI2_BIT != 0)
		{
			//add code
		}
		if(k.Bits.TI3_BIT != 0)
		{
			//add code
		}
		if(k.Bits.BEI_BIT != 0)
		{
			//add code
			CanBufOffLinePrg(j);
		}
		if(k.Bits.ALI_BIT != 0)
		{
			//add code
		}
		if(k.Bits.EPI_BIT != 0)
		{
			//add code
		}
		if(k.Bits.WUI_BIT != 0)
		{
			//add code
		}
		if(k.Bits.DOI_BIT != 0)
		{
			//add code
			ClrCanDataOver(j);
		}
	}
	VICVectAddr = 0;
}

/*
***********************************************************************************************************
**函數原型	:  	void	ConfigAFReg ()
**參數說明	:  	
**返回值		:		
**說	明		:	本函數用于配置驗收過濾器
************************************************************************************************************
*/
void	ConfigAFReg (void)
{
	//配置驗收過濾器
	#if AF_REG_ENABLE
	UINT32	state;
	//初始化表格地址	
	//stcAF_SFF_CELL sffIndvTab[]={{56,0,0,0,1,0,0,0},{88,0,0,0,33,0,0,0}};
	//stcAF_SFF_CELL sffIndvTab[]={56,0,0,0,57,0,0,0};
	AFBuildLUT(0,0,5,0,0);
		/*初始化標準幀獨立表格*/
		#if	SFF_INDV_nCell
			state = AFInitSFFIndvTab(sffIndvTab,sizeof(sffIndvTab)/sizeof(stcAF_SFF_CELL));
			/*添加用戶代碼*/
		#endif
		/*初始化標準幀范圍表格*/
		#if SFF_GRP_nCell
			sffGrpTab[0].UpId=Locoal_Addr<<3;
			sffGrpTab[0].LoId=Locoal_Addr<<3;
			state = AFInitSFFGrpTab(sffGrpTab,sizeof(sffGrpTab)/sizeof(stcAF_SFF_CELL));
			/*添加用戶代碼*/
		#endif
		/*初始化擴展幀獨立表格*/
		#if	EFF_INDV_nCell
			state = AFInitEFFIndvTab(effIndvTab,sizeof(effIndvTab)/sizeof(stcAF_EFF_CELL));
			/*添加用戶代碼*/
		#endif
		/*初始化擴展幀范圍表格*/
		#if	EFF_GRP_nCell
			state = AFInitEFFGrpTab(effGrpTab,sizeof(effGrpTab)/sizeof(stcAF_EFF_CELL));
			/*添加用戶代碼*/
		#endif
		/*設置驗收過濾模式*/
		AFSetMode(Normal);
	#else
		AFSetMode (Bypass);
	#endif
}

/*
***********************************************************************************************************
**函數原型		:  	void	InitCAN(eCANNUM CanNum)
**參數說明		:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:	無	
**說	明		;	本函數用于初始化CAN控制器
************************************************************************************************************/
void	InitCAN(eCANNUM CanNum)
{	
	HwEnCAN(CanNum);																	
	SoftRstCAN(CanNum);																
	CANEWL(CanNum).Bits.EWL_BIT = USE_EWL_CAN[CanNum];										
	//初始化波特率
	CANBTR(CanNum).Word = USE_BTR_CAN[CanNum];											
	//初始化中斷為非向量中斷
	VICDefVectAddr =(UINT32)CANIntPrg;
	VICIntEnable |=(1<<19)|(1<<(20+ CanNum))|(1<<(26+ CanNum));
	CANIER(CanNum).Word= USE_INT_CAN[CanNum];												
	//配置驗收濾波器(旁路狀態)
	CANAFMR.Bits.AccBP_BIT =1;	
	//初始化模式
	CANMOD(CanNum).Bits.TPM_BIT = USE_TPM_CAN[CanNum];										
	CANMOD(CanNum).Bits. LOM_BIT = USE_MOD_CAN[CanNum];
	//初始化接收環形緩沖區
	CANRcvBufApp.FullFlag1=CANRcvBufApp.FullFlag2=CANRcvBufApp.FullFlag3=CANRcvBufApp.FullFlag4=0;
	CANRcvBufApp.ReadPoint1=CANRcvBufApp.ReadPoint2=CANRcvBufApp.ReadPoint3=CANRcvBufApp.ReadPoint4=0;
	CANRcvBufApp.WritePoint1=CANRcvBufApp.WritePoint2=CANRcvBufApp.WritePoint3=CANRcvBufApp.WritePoint4=0;
	//啟動CAN
	SoftEnCAN(CanNum);
}
/*
***********************************************************************************************************
**函數原型		:  	UINT32	CANSendData(eCANNUM CanNum,UINT32 Cmd,P_stcTxBUF Buf)
**參數說明		:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
					Cmd	-->	發送命令字
					Buf	-->	要發送的數據
**返回值		:	無	
**說	明		:	本函數用于將數據發送到CAN總線
************************************************************************************************************/
UINT32		CANSendData(eCANNUM CanNum,UINT32 Cmd,P_stcTxBUF Buf)
{
	UINT32 i,status=0;
	if(0 != CANSR(CanNum).Bits.TBS1_BIT)
	{
		i=SEND_TX_BUF1;
	}
	else if(0 != CANSR(CanNum).Bits.TBS2_BIT)
	{
		i=SEND_TX_BUF2;
	}
	else if(0 != CANSR(CanNum).Bits.TBS3_BIT)
	{
		i=SEND_TX_BUF3;
	}
	else
	{
		i=0xFF;
	}
	status=WriteCanTxBuf(CanNum,i,  USE_TPM_CAN[CanNum],  Buf);
	if(status == 0)
	{
		#if 1
		if(CANMOD(CanNum).Bits.SM_BIT != 0)												
		{
			CanQuitSM(CanNum);
		}
		#endif
		CanSendCmd(CanNum,Cmd,i);
	}
	return (status);
}
/*
***********************************************************************************************************
**函數原型		:  	UINT32	ReadCANRcvCyBuf(eCANNUM CanNum,stcRxBUF *Buf)
**參數說明		:  	CanNum	-->	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
					Buf		-->	使用驅動接收到的緩沖區數據
**返回值		:	=0,驅動接收到數據。
					!=0,驅動沒接收到數據。	
**說	明		:	本函數用于用戶調用使用CAN驅動接收到的數據。
************************************************************************************************************/
UINT32	ReadCANRcvCyBuf(eCANNUM CanNum,stcRxBUF *Buf)
{
	UINT32	status=0;
	switch(CanNum)
	{
		case	CAN1:
			if((0 != CANRcvBufApp.FullFlag1) ||
				(CANRcvBufApp.ReadPoint1 != CANRcvBufApp.WritePoint1))
			{
				*Buf=CANRcvBufApp.RcvBuf[CAN1][CANRcvBufApp.ReadPoint1];
				if(++CANRcvBufApp.ReadPoint1 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.ReadPoint1 =0;
				}
				CANRcvBufApp.FullFlag1=0;
			}
			else 
			{
				status=1;
			}
			break;
		case	CAN2:
			if((0 != CANRcvBufApp.FullFlag2) ||
				(CANRcvBufApp.ReadPoint2 != CANRcvBufApp.WritePoint2))
			{
				*Buf=CANRcvBufApp.RcvBuf[CAN2][CANRcvBufApp.ReadPoint2];
				if(++CANRcvBufApp.ReadPoint2 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.ReadPoint2 =0;
				}
				CANRcvBufApp.FullFlag2=0;
			}
			/*case	CAN3:
			if((0 != CANRcvBufApp.FullFlag3) ||
				(CANRcvBufApp.ReadPoint3 != CANRcvBufApp.WritePoint3))
			{
				*Buf=CANRcvBufApp.RcvBuf[CAN3][CANRcvBufApp.ReadPoint3];
				if(++CANRcvBufApp.ReadPoint3 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.ReadPoint3 =0;
				}
				CANRcvBufApp.FullFlag3=0;
			}
			else 
			{
				status=1;
			}
			break;
		case	CAN4:
			if((0 != CANRcvBufApp.FullFlag4) ||
				(CANRcvBufApp.ReadPoint4 != CANRcvBufApp.WritePoint4))
			{
				*Buf=CANRcvBufApp.RcvBuf[CAN4][CANRcvBufApp.ReadPoint4];
				if(++CANRcvBufApp.ReadPoint4 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.ReadPoint4 =0;
				}
				CANRcvBufApp.FullFlag4=0;
			}*/
			else 
			{
				status=1;
			}
			//break;
		break;
		default:
			status=1;
			break;
	}
	return status;
}
/*
***********************************************************************************************************
**函數原型		:  	void	WriteCANRcvCyBuf(eCANNUM CanNum)
**參數說明		:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 規定的值
**返回值		:		
**說	明		:	本函數用于驅動將收到的CAN數據寫入環形緩沖區
************************************************************************************************************/
void	WriteCANRcvCyBuf(eCANNUM CanNum)
{
	switch(CanNum)
	{
		case	CAN1:
			if((0 == CANRcvBufApp.FullFlag1))
			{
				CANRcvBufApp.RcvBuf[CAN1][CANRcvBufApp.WritePoint1] = RxBUF(CAN1);
				if(++CANRcvBufApp.WritePoint1 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.WritePoint1=0;
				}
				if(CANRcvBufApp.WritePoint1 == CANRcvBufApp.ReadPoint1)
				{
					CANRcvBufApp.FullFlag1 =1;
				}
			}
			break;
		case	CAN2:
			if((0 == CANRcvBufApp.FullFlag2))
			{
				CANRcvBufApp.RcvBuf[CAN2][CANRcvBufApp.WritePoint2] = RxBUF(CAN2);
				if(++CANRcvBufApp.WritePoint2 >= USE_CAN_RCV_BUF_SIZE)
				{
					CANRcvBufApp.WritePoint2=0;
				}
				if(CANRcvBufApp.WritePoint2 == CANRcvBufApp.ReadPoint2)
				{
					CANRcvBufApp.FullFlag2 =1;
				}
			}
			break;

		default:
			break;
	}
	RelCanRecBuf(CanNum);
}
//應用常量定義
//使用工作模式
const 	UINT32	USE_MOD_CAN[2] = 
{
	USE_MODE_CAN1,
	USE_MODE_CAN2,
	
};

//使用波特率
const 	UINT32	USE_BTR_CAN[2] = 
{
	USE_BTR_CAN1,
	USE_BTR_CAN2,
	
};
//使用發送緩沖區發送優先級模式選擇
const 	UINT32	USE_TPM_CAN[2] = 
{
	USE_TPM_CAN1,
	USE_TPM_CAN2,
	
};
//應用中斷
const 	UINT32	USE_INT_CAN[2] = 
{
	USE_INT_CAN1,
	USE_INT_CAN2,
	
};
//應用報警限制
const	UINT32	USE_EWL_CAN[2] = 
{
	USE_EWL_CAN1,
	USE_EWL_CAN2,
	
};
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品电影一区二区三区| 国产三级精品三级在线专区| 99久久精品国产导航| 国产精一品亚洲二区在线视频| 日韩主播视频在线| 日韩黄色小视频| 狠狠色丁香婷婷综合| 国产精品自拍一区| 成人黄色a**站在线观看| 成人av电影在线网| 色天天综合久久久久综合片| 欧美三电影在线| 欧美精品电影在线播放| 欧美va亚洲va香蕉在线| 久久久精品影视| 成人免费在线观看入口| 亚洲成人手机在线| 精品在线观看视频| av福利精品导航| 欧美日韩你懂的| 久久精品无码一区二区三区| 中文字幕中文字幕在线一区| 夜夜夜精品看看| 九九热在线视频观看这里只有精品| 国产精品1区二区.| 欧美在线视频全部完| 欧美一区二区三区视频在线 | 亚洲精品在线免费播放| 久久久久免费观看| 一区二区三区在线观看国产| 日韩黄色一级片| k8久久久一区二区三区| 91精品国产一区二区三区香蕉| wwwwww.欧美系列| 洋洋成人永久网站入口| 韩国成人福利片在线播放| 99久久99久久精品免费看蜜桃 | 婷婷夜色潮精品综合在线| 国产精品88888| 在线观看91av| 综合久久一区二区三区| 蜜桃视频在线观看一区二区| 99re这里都是精品| 精品噜噜噜噜久久久久久久久试看 | 麻豆一区二区三| 91蜜桃视频在线| 国产日韩亚洲欧美综合| 天天操天天综合网| 99视频精品全部免费在线| 欧美tk丨vk视频| 日日夜夜免费精品视频| 色综合久久88色综合天天免费| 日韩欧美资源站| 日韩中文字幕区一区有砖一区 | 欧美四级电影在线观看| 国产欧美在线观看一区| 裸体一区二区三区| 欧美亚洲综合另类| 亚洲欧美偷拍卡通变态| 成人高清视频在线| 国产三级精品三级| 国产精品1区2区3区在线观看| 91精品免费在线| 午夜精品一区二区三区电影天堂| 99在线精品视频| 1区2区3区精品视频| 国产91丝袜在线播放| 欧美va日韩va| 国产在线播放一区三区四| 日韩三级在线免费观看| 三级成人在线视频| 欧美日韩免费观看一区二区三区| 一区二区三区四区在线免费观看| youjizz久久| 一区精品在线播放| 91婷婷韩国欧美一区二区| 国产精品久久久久久久久久久免费看 | 亚洲欧美在线视频| av电影在线不卡| 中文字幕视频一区| 成人午夜免费av| 亚洲欧美综合另类在线卡通| 99久久国产综合色|国产精品| 亚洲色图欧洲色图| 日本精品视频一区二区| 亚洲黄色录像片| 欧美日韩综合在线| 奇米一区二区三区| 国产亚洲一本大道中文在线| 国产福利一区二区三区在线视频| 亚洲国产精品高清| 色天使久久综合网天天| 五月综合激情网| 精品国产乱码91久久久久久网站| 国产一区二区精品久久| 国产精品国产三级国产aⅴ中文| 97精品电影院| 午夜免费久久看| xnxx国产精品| 色综合天天综合| 日韩电影免费在线| 国产日韩欧美a| 欧美性生活大片视频| 蜜桃一区二区三区在线观看| 国产精品污污网站在线观看| 在线观看日产精品| 不卡的av电影| 亚洲电影一级片| 国产人成一区二区三区影院| 日本在线观看不卡视频| 欧美日韩精品电影| 国产在线国偷精品产拍免费yy| 日韩你懂的在线播放| 国产精品久久福利| 国产午夜亚洲精品午夜鲁丝片| 日韩精品中文字幕在线不卡尤物 | 国产不卡视频一区| 国产成人精品一区二区三区网站观看| 国产资源在线一区| 国产精选一区二区三区| 国产a精品视频| 国产成人精品免费| 成人激情校园春色| 99在线视频精品| 在线观看一区日韩| 7777精品伊人久久久大香线蕉经典版下载 | 日韩手机在线导航| 日韩精品一区二区三区蜜臀 | 久久国产精品99久久久久久老狼| 久久se精品一区二区| 国产一区二区三区免费观看| 国产不卡视频在线播放| 91麻豆国产福利精品| 欧美色综合天天久久综合精品| 欧美日韩一级二级| 日韩精品一区二区三区视频| 欧美激情一区二区三区四区 | 国产日韩欧美在线一区| 中文字幕制服丝袜成人av| 夜夜嗨av一区二区三区网页| 亚洲h精品动漫在线观看| 六月丁香婷婷久久| 99re视频这里只有精品| 在线播放中文一区| 久久精品人人做人人爽人人| 一区二区三区在线视频观看58| 日韩av在线免费观看不卡| 国产成+人+日韩+欧美+亚洲| 欧美亚洲国产一区二区三区| 精品福利一二区| 综合久久一区二区三区| 琪琪一区二区三区| 99国内精品久久| 欧美成人性战久久| 一区二区三国产精华液| 国产一区二区三区蝌蚪| 欧美熟乱第一页| 国产婷婷色一区二区三区在线| 亚洲国产精品欧美一二99| 国产精品一区二区久久不卡 | 中文一区一区三区高中清不卡| 一区二区三区国产| 国产精品99久久久久久有的能看| 欧美性色欧美a在线播放| 国产欧美日韩久久| 免费高清成人在线| 色素色在线综合| 国产精品电影一区二区| 激情文学综合网| 555夜色666亚洲国产免| 亚洲色图欧美激情| 国产精品18久久久| 日韩欧美激情在线| 婷婷久久综合九色综合绿巨人 | 国产成人免费在线视频| 欧美日韩成人一区| 亚洲精品成人a在线观看| 国产成人精品午夜视频免费| 欧美一区二区三区免费在线看| 亚洲欧洲日韩综合一区二区| 国产美女在线精品| 欧美mv日韩mv国产网站| 日韩vs国产vs欧美| 欧美电影一区二区| 亚洲国产成人91porn| 欧美在线短视频| 亚洲精品欧美专区| 91香蕉视频污在线| 亚洲乱码国产乱码精品精可以看| 成人精品在线视频观看| 国产精品私人影院| 成人av综合在线| 欧美激情一区二区| eeuss鲁片一区二区三区在线观看| 久久精品男人的天堂| 国产成人av资源| 国产精品久99| 一本一本久久a久久精品综合麻豆| 中文字幕在线观看不卡| 99精品久久99久久久久|