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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? can.c

?? 瑞薩的DOME板LIN主從節(jié)點(diǎn)程序調(diào)試通過(guò)可以使用
?? C
字號(hào):
/****************************************************************/
/* 項(xiàng)目名稱(chēng)     : R8C/23 CAN/LIN Demo Board		                */
/*              : 樣例程序2                                     */
/*              : CAN收發(fā)										*/
/* 硬件環(huán)境		: R0K521237C000BB								*/
/* MCU型號(hào)      : R5F21237JFP                                   */
/* C編譯器		: NC30WA,版本5.30.r02及以上					*/
/* 文件名	    : CAN.c											*/
/* 版本			: 1.0                                           */
/* 作者			: wangsy                                        */
/* 修訂歷史     :                                               */
/*			修訂者		時(shí)間		版本	說(shuō)明				*/
/*			wangsy		2006/9/11	1.0		初版發(fā)行			*/
/*																*/
/****************************************************************/
/*		Copyright, 2006 RENESAS TECHNOLOGY CORPORATION &        */
/*                      RENESAS SOLUTIONS CORPORATION			*/
/****************************************************************/

/*------------包含的頭文件--------------*/
#include "..\inc\Comdef_r823.h"
#include "..\inc\CAN.h"

/*-------------變量定義-----------------*/
// CAN 接受幀
can_std_data_def ReceiveData = {0x00U, 0x08, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
// CAN 發(fā)送幀
can_std_data_def TransmitData = {SND_FRM_ID, 0x08, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};

uchar8 ucFlag_CAN0_RE = NO;		// CAN接收,事件觸發(fā)標(biāo)志

uchar8 re_slot = RCV_SLOT;		// 接收信箱
uchar8 tr_slot = SND_SLOT; 		// 發(fā)送信箱

/*-------------函數(shù)聲明-----------------*/
void config_can0(void); 		// CAN0初始設(shè)置
void can0_receive(void);		// CAN0接收入口函數(shù)
void can0_transmit(void);		// CAN0發(fā)送入口函數(shù)
void set_bitrate_can0(void);	// CAN0波特率設(shè)置
// 移位(左移)函數(shù) MISRA中不允許移位的位數(shù)為變量
uint16 left_shift(uint16 oprnd_obj, uchar8 left_bit);	
// 設(shè)置CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的發(fā)送
void set_trm_std_dataframe_can0(uchar8 in_slot, can_std_data_def * in_trm_data);
// 設(shè)置CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的接收
void set_rcv_std_dataframe_can0(uchar8 in_slot, uint16 in_sid);

/*-----------中斷處理函數(shù)---------------*/
void int_can0_receive(void);

/*------------函數(shù)定義------------------*/
/*------------------------------------------------------
  名稱(chēng)		: config_can0
  功能		: CAN0初始設(shè)置
  入口		: 無(wú)
  出口		: 無(wú)
  調(diào)用		: 調(diào)用void set_bitrate_can0(void)
  寄存器	: c0ctlr, c0str,c0recic,c0gmr,c0lmar,c0lmbr
------------------------------------------------------*/
void config_can0(void)
{
	// canI/O 設(shè)置
	pd6_1 = 1;
	pd6_2 = 0;

	c0ctlr_addr.b.reset = 1; 				// 進(jìn)入初始化模式
	c0ctlr_addr.b.sleep = 0; 				// 結(jié)束休眠模式	

	while(c0str_addr.b.state_reset == 0) 	// 等待處理器進(jìn)入初始化模式
	{	
	}

	c0ctlr_addr.b.porten = 1;	   			// CAN端口使能
	c0ctlr_addr.b.loopback = 0;    			// 不采用自環(huán)模式 
	c0ctlr_addr.b.msgorder = 1;    			// 消息順序:字節(jié)訪問(wèn)
	c0ctlr_addr.b.basiccan = 0;    			// 不采用Basic CAN模式
	c0ctlr_addr.b.buserren = 0;    			// 禁止總線錯(cuò)誤中斷 
	c0ctlr_addr.b.tsprescale = 0;  			// 時(shí)間戳預(yù)分頻器:"period of 1bit time"

	set_bitrate_can0();  					// 調(diào)用比特率設(shè)置函數(shù)

	c0ctlr_addr.b.reset = 0;  				// 跳出初始化模式 

	while(c0str_addr.b.state_reset != 0)	// 確認(rèn)跳出初始化模式
	{	
	}

	c0recic_addr.byte = CAN0_RCV_PRIORITY;	// CAN0接收中斷優(yōu)先級(jí)5

	//設(shè)置屏蔽寄存器為可以接收所有的ID
	c0gmr.ba.sidh = 0x0;		 
	c0gmr.ba.sidl = 0x0;		
	
	c0lmar.ba.sidh = 0x0;		
	c0lmar.ba.sidl= 0x0;

	c0lmbr.ba.sidh = 0x0;		
	c0lmbr.ba.sidl= 0x0;
}

/*------------------------------------------------------
  名稱(chēng)		: set_bitrate_can0
  功能		: CAN0波特率設(shè)置
  入口		: 無(wú)
  出口		: 無(wú)
  調(diào)用		: 無(wú)
  寄存器	: prc0,cclkr,c0conr
------------------------------------------------------*/
void set_bitrate_can0(void)
{
	// clock = 20MHz 
	prc0 = 1; 							// 打開(kāi)保護(hù)寄存器
	cclkr &= ~(uchar8)0x00;				// 清零 CAN0 時(shí)鐘寄存器
	prc0 = 0;							// 關(guān)閉保護(hù)寄存器
	c0conr_addr.b.brp = CAN0_BRP - 1U; 	// CAN 時(shí)鐘預(yù)分頻器 = 10  125kbps
	
	// 設(shè)置位時(shí)序
	c0conr_addr.b.sam = BT_SAM - 1U; 	// SS = 1 Tq 	
	c0conr_addr.b.pts = BT_PTS - 1U; 	// PTS = 1 Tq 
	c0conr_addr.b.pbs1 = BT_PBS1 - 1U;	// PBS1 = 3 Tq 
	c0conr_addr.b.pbs2 = BT_PBS2 - 1U;	// PBS2 = 3 Tq 
	c0conr_addr.b.sjw = BT_SJW - 1U; 	// SJW = 1 Tq 
}

/*------------------------------------------------------
  名稱(chēng)		: left_shift
  功能		: 移位(左移)函數(shù)
  入口		: 要求左移的位數(shù)
  出口		: 被移位的變量
  調(diào)用		: 無(wú)
  寄存器	: 無(wú)
------------------------------------------------------*/
uint16 left_shift(uint16 oprnd_obj, uchar8 left_bit)
{
	switch(left_bit)
	{
		case 0:
			break;
		case 1:
			oprnd_obj = oprnd_obj << 1;
			break;
		case 2:
			oprnd_obj = oprnd_obj << 2;
			break;
		case 3:
			oprnd_obj = oprnd_obj << 3;
			break;
		case 4:
			oprnd_obj = oprnd_obj << 4;
			break;
		case 5:
			oprnd_obj = oprnd_obj << 5;
			break;
		case 6:
			oprnd_obj = oprnd_obj << 6;
			break;
		case 7:
			oprnd_obj = oprnd_obj << 7;
			break;
		case 8:
			oprnd_obj = oprnd_obj << 8;
			break;
		case 9:
			oprnd_obj = oprnd_obj << 9;
			break;
		case 0x0a:
			oprnd_obj = oprnd_obj << 0x0a;
			break;
		case 0x0b:
			oprnd_obj = oprnd_obj << 0x0b;
			break;
		case 0x0c:
			oprnd_obj = oprnd_obj << 0x0c;
			break;
		case 0x0d:
			oprnd_obj = oprnd_obj << 0x0d;
			break;
		case 0x0e:
			oprnd_obj = oprnd_obj << 0x0e;
			break;
		case 0x0f:
			oprnd_obj = oprnd_obj << 0x0f;
			break;
		default:
			break;
	}
	
	// 將移位完的操作數(shù)返回
	return(oprnd_obj);
}

/*------------------------------------------------------
  名稱(chēng)		: set_trm_std_dataframe_can0
  功能		: 設(shè)置CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的發(fā)送
  入口		: in_slot:		信箱號(hào)
  			  *in_trm_data:發(fā)送數(shù)據(jù)幀的地址
  出口		: 無(wú)
  調(diào)用		: uint16 left_shift(uint16 oprnd_obj, uchar8 left_bit)
  寄存器	: c0mctl,c0icr,c0idr,c0slot
------------------------------------------------------*/
void set_trm_std_dataframe_can0(uchar8 in_slot, can_std_data_def *in_trm_data)
{
	uchar8 LoopCounter; 
	uint16 temp;

	// 確認(rèn)可以發(fā)送
	while(c0mctl[in_slot].transmit.trmactive == 1)	
	{
	}

	// 清零CAN0消息控制寄存器
	while(c0mctl[in_slot].byte != 0x00)		
	{
		c0mctl[in_slot].byte = 0x00;		
	}

	// 對(duì)應(yīng)信箱,CAN0中斷控制寄存器禁止	
	temp = c0icr_addr.word + 0U;
	temp &= (~(left_shift((uint16)0x0001, in_slot)));
	c0icr_addr.word = (int16)temp;
	
	// 對(duì)應(yīng)信箱,CAN0采用標(biāo)準(zhǔn)ID
	temp = c0idr_addr.word + 0U;
	temp &=  ~(left_shift((uint16)0x0001, in_slot));
	c0idr_addr.word = (int16)temp;
	
	c0slot[in_slot].ba.sidh = (uchar8)(((in_trm_data->id)>> 6U) & 0x1FU); 	// 設(shè)置SID10-6 	
	c0slot[in_slot].ba.sidl = (uchar8)((in_trm_data->id) & 0x3FU); 			// 設(shè)置SID5-0
	c0slot[in_slot].ba.dlc = in_trm_data->dlc;	 							// 設(shè)置DLC

	// 將發(fā)送數(shù)據(jù)放入CAN0發(fā)送信箱
	for(LoopCounter=0; (LoopCounter<(in_trm_data->dlc))&&(LoopCounter<8); ++LoopCounter)
    {	
        c0slot[in_slot].ba.data[LoopCounter] = in_trm_data->data[LoopCounter];
	}

	// 啟動(dòng)標(biāo)準(zhǔn)數(shù)據(jù)幀的發(fā)送
	c0mctl[in_slot].byte = 0x80; 	
}

/*------------------------------------------------------
  名稱(chēng)		: can0_receive
  功能		: CAN0接收
  入口		: 無(wú)
  出口		: 無(wú)
  調(diào)用		: void set_rcv_std_dataframe_can0(uchar8 in_slot, uint16 in_sid)
  寄存器	: 無(wú)
------------------------------------------------------*/
void can0_receive(void)
{
	// 調(diào)用CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的接收設(shè)置
	set_rcv_std_dataframe_can0(re_slot, ReceiveData.id);
}

/*------------------------------------------------------
  名稱(chēng)		: set_rcv_std_dataframe_can0
  功能		: 設(shè)置CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的接收
  入口		: in_slot:	信箱號(hào)
  			  in_sid:	接收SID
  出口		: 無(wú)
  調(diào)用		: uint16 left_shift(uint16 oprnd_obj, uchar8 left_bit)
  寄存器	: c0mctl,c0icr,c0idr,c0slot
------------------------------------------------------*/
void set_rcv_std_dataframe_can0(uchar8 in_slot, uint16 in_sid)
{
	uint16 temp;

	// 清零CAN0消息控制寄存器
	while(c0mctl[in_slot].byte != 0x00)		
	{	
		c0mctl[in_slot].byte = 0x00;		 
	}
	
	// 對(duì)應(yīng)信箱,CAN0中斷控制寄存器允許
	temp = c0icr_addr.word + 0U;
	temp |= left_shift((uint16)0x0001, in_slot);	
	c0icr_addr.word = (int16)temp;
	
	// 對(duì)應(yīng)信箱,CAN0采用標(biāo)準(zhǔn)ID
	temp = c0idr_addr.word + 0U;
	temp &= ~(left_shift((uint16)0x0001, in_slot));	
	c0idr_addr.word = (int16)temp;
			
	c0slot[in_slot].ba.sidh = (uchar8)((in_sid>> 6U) & 0x1FU); 	// 設(shè)置 SID10-6 
	c0slot[in_slot].ba.sidl = (uchar8)(in_sid & 0x3FU); 		// 設(shè)置 SID5-0
	
	// 啟動(dòng)CAN0標(biāo)準(zhǔn)數(shù)據(jù)幀的接收 
	c0mctl[in_slot].byte = 0x40; 
}

/*------------------------------------------------------
  名稱(chēng)		: can0_transmit
  功能		: CAN0發(fā)送
  入口		: 無(wú)
  出口		: 無(wú)
  調(diào)用		: void set_trm_std_dataframe_can0(uchar8 in_slot, can_std_data_def * in_trm_data)
  寄存器	: 無(wú)
------------------------------------------------------*/
void can0_transmit(void)
{
    set_trm_std_dataframe_can0(tr_slot, &TransmitData);
}

/*------------------------------------------------------
  名稱(chēng)		: int_can0_receive
  功能		: 中斷處理函數(shù):CAN0接收
  入口		: 無(wú)
  出口		: 無(wú)
  調(diào)用		: 無(wú)
  寄存器	: c0mctl,c0slot
------------------------------------------------------*/
#pragma INTERRUPT int_can0_receive
void int_can0_receive(void)
{
	uchar8 lp_dlc;

	// 當(dāng)發(fā)生中斷時(shí),將CAN0接收事件觸發(fā)標(biāo)志置為YES
	ucFlag_CAN0_RE = YES;

	// 確認(rèn)新的數(shù)據(jù)來(lái)到
	while(c0mctl [re_slot].receive.newdata != 1)
	{
	}
	
	// 等待直到消息有效
	while(c0mctl[re_slot].receive.invaldata == 1)
	{
	}
	
	// 清零
	c0mctl[re_slot].receive.newdata = 0;
	
	// 檢查過(guò)載錯(cuò)誤
	if(c0mctl[re_slot].receive.msglost == 1) 
	{
		c0mctl[re_slot].receive.msglost = 0;

		// 當(dāng)發(fā)生過(guò)載錯(cuò)誤時(shí)的用戶(hù)處理程序(略)
	}
	else
	{
	}

	// 讀出消息
	ReceiveData.id = ((uint16)c0slot[re_slot].ba.sidh << 6) + c0slot[re_slot].ba.sidl;
	
	ReceiveData.dlc = c0slot[re_slot].ba.dlc;
	
	for(lp_dlc=0; lp_dlc<c0slot[re_slot].ba.dlc; ++lp_dlc)
	{
		ReceiveData.data[lp_dlc] = c0slot[re_slot].ba.data[lp_dlc];
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草原综合久久大伊人精品优势| 中文字幕一区三区| 精品国产在天天线2019| 国产精品无遮挡| 五月天久久比比资源色| 精品久久国产字幕高潮| 国产精品久久久久四虎| 蜜臀va亚洲va欧美va天堂| 色婷婷av一区| 国产亚洲欧洲997久久综合| 亚洲小说欧美激情另类| 国产99精品在线观看| 日韩视频免费观看高清完整版在线观看 | 欧美国产在线观看| 日韩av一级片| 色婷婷国产精品| 久久久久久久久99精品| 日本成人中文字幕在线视频| 欧美成人性战久久| 欧美国产一区视频在线观看| 日本在线播放一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 国产精品久久久久影院老司| 精品写真视频在线观看| 欧美日韩中文另类| 一区二区欧美视频| 91麻豆免费视频| 亚洲欧美日韩国产中文在线| 国产在线不卡一区| www激情久久| 国产一区二区中文字幕| 精品成a人在线观看| 久久精品国产77777蜜臀| 欧美一二三四在线| 美脚の诱脚舐め脚责91| 欧美一区欧美二区| 免费看日韩精品| 日韩精品专区在线影院观看| 日本女人一区二区三区| 欧美一级在线免费| 国产麻豆91精品| 国产精品国产三级国产有无不卡 | 亚洲一区二区三区国产| 欧美午夜片在线观看| 午夜欧美大尺度福利影院在线看| 91免费版在线| 日日夜夜免费精品视频| 日韩免费性生活视频播放| 国内久久精品视频| 国产精品乱码人人做人人爱| 色综合久久中文综合久久牛| 一区二区三区四区在线| 欧美喷水一区二区| 亚洲一区二区三区免费视频| 欧美三级在线视频| 亚洲va欧美va人人爽| 欧美日本韩国一区| 奇米综合一区二区三区精品视频| 欧美一级一区二区| 亚洲综合一二三区| 欧美午夜免费电影| 日韩成人免费电影| 精品伦理精品一区| 豆国产96在线|亚洲| 中文字幕一区二区三区在线不卡| 成+人+亚洲+综合天堂| 亚洲国产日韩一级| 91精品国产综合久久久蜜臀图片 | 欧美日韩精品一区二区在线播放| 亚洲乱码一区二区三区在线观看| 在线精品亚洲一区二区不卡| 日本欧美一区二区三区| 日本一区二区三区dvd视频在线| 国产成人精品三级麻豆| 中文字幕一区二区在线观看| 色丁香久综合在线久综合在线观看| 亚洲国产一区视频| 欧美电视剧免费观看| 91一区在线观看| 五月婷婷色综合| 久久久久久久综合色一本| 精品国产百合女同互慰| 午夜av区久久| 国产免费久久精品| 欧美午夜精品免费| 成人免费看片app下载| 亚洲高清免费观看| 国产精品久久久久天堂| 欧美一区二区三区电影| 久久国产精品无码网站| 亚洲免费观看在线视频| 91精品国产综合久久婷婷香蕉| 成人天堂资源www在线| 久久99久久精品| 亚洲色图都市小说| 国产精品污www在线观看| 欧美视频中文字幕| 色婷婷国产精品久久包臀| 国产在线视频精品一区| 亚洲福利一区二区三区| 国产精品久久精品日日| 日韩视频在线永久播放| 91香蕉视频黄| 国产精品一区二区在线播放| 亚洲国产另类av| 国产精品水嫩水嫩| 欧美xingq一区二区| 欧美三级在线视频| 91亚洲精品久久久蜜桃网站 | 日韩国产欧美在线视频| 自拍偷拍欧美激情| 精品久久一区二区| 日本韩国视频一区二区| 91丨porny丨国产| 懂色av一区二区三区免费观看| 亚洲高清免费视频| 亚洲伊人伊色伊影伊综合网| 国产精品美女久久久久久| 日韩精品中文字幕在线一区| 欧美日韩色综合| 欧美在线观看视频一区二区| 成人黄色网址在线观看| 国产精品1024久久| 国产高清视频一区| 亚洲一区av在线| 性感美女久久精品| 亚欧色一区w666天堂| 一区二区三区免费网站| 亚洲日本韩国一区| 18成人在线观看| 亚洲视频小说图片| 亚洲国产精品一区二区www在线| 亚洲精品福利视频网站| 亚洲欧美日韩久久| 久久综合九色综合久久久精品综合 | 图片区小说区国产精品视频| 日韩一区二区精品葵司在线| 黄页视频在线91| 粉嫩高潮美女一区二区三区 | 欧美日韩中文字幕一区| 日本精品一区二区三区四区的功能| 激情国产一区二区| 国内外精品视频| 国产九色精品成人porny| 国产传媒欧美日韩成人| www.色综合.com| 91碰在线视频| 欧美日韩你懂的| 日韩视频免费观看高清完整版在线观看| 欧美一区二区三区在线| 欧美三级乱人伦电影| 欧美一区二区三区系列电影| 国内精品伊人久久久久av一坑| 日韩在线a电影| 一区二区不卡在线视频 午夜欧美不卡在| 久久亚洲影视婷婷| 亚洲国产另类av| 一区二区三区国产精华| 日本少妇一区二区| 国产视频在线观看一区二区三区| 欧美高清视频不卡网| 在线观看av一区二区| 成人涩涩免费视频| 欧美一级二级在线观看| 日韩国产一区二| 制服丝袜亚洲播放| 中文字幕国产一区| 亚洲天堂av一区| 日韩一级视频免费观看在线| 裸体一区二区三区| 国产精品免费看片| 国产99一区视频免费| 欧美性色黄大片| 欧美激情综合在线| 亚洲视频免费观看| 国产一区二区福利| 91年精品国产| 精品国产乱码久久久久久免费| 欧美大片拔萝卜| 亚洲成a人v欧美综合天堂| 亚洲国产精品自拍| 欧美一级黄色片| 成人av在线网| 精品人在线二区三区| 欧美色综合影院| 国产欧美日本一区视频| 欧美日韩精品电影| 图片区日韩欧美亚洲| 国产精品入口麻豆原神| 欧美欧美欧美欧美首页| 亚洲国产成人精品视频| 337p亚洲精品色噜噜噜| 日韩av高清在线观看| 久久蜜桃一区二区| 日本道精品一区二区三区| 精品一区二区三区免费| 欧美成人伊人久久综合网| 国产成人av电影免费在线观看| 夜色激情一区二区| 日韩免费看的电影|