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

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

?? canbus.c

?? 新能源燃料電池小車系統
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dp256.h>     /* derivative information */
#include "DataType.h"					/* data definition information*/
#include "Hd_Mcu_Cfg.h"				/* hardware configuration and macros*/
#include "CAN_Cfg.h"          /* CANBUS configuration and relative function declaration*/

extern  unsigned  int   Ist;             //stands for stack output current with resolution of 0.1A
extern  unsigned  int   Vst;             //stands for stack output voltage with resolution of 0.1V
extern  unsigned  int   Pst;             //stands for gross output power of stack  W
extern  unsigned  int   PHS;             //stansd for hydrogen supply pressure, base 0 and resoultion is 1mbara
extern  unsigned  int   PHin;             //stansd for anode   inlet pressure, base 0 and resoultion is 1mbara
extern  unsigned  int   PWin;             //stansd for coolant inlet pressure, base 0 and resoultion is 1mbara
extern  unsigned  int   PAin;             //stansd for cathode inlet pressure, base 0 and resoultion is 1mbara
extern  unsigned  int   TAin;             //stansd for cathode inlet tempature, base -40C and resoultion is 0.01
extern  unsigned  int   THin;             //stansd for anode   inlet tempature, base -40C and resoultion is 0.01
extern  unsigned  int   TWin;             //stansd for coolant inlet  tempature, base -40C and resoultion is 0.01
extern  unsigned  int   TWout;             //stansd for coolant outlet tempature, base -40C and resoultion is 0.01 

//Data used for CAN trans and control
extern  unsigned  int   Pset;					//Pset value from VMS, resolution is 1W, which original resolution from CANBUS is 60W
extern  unsigned  int   PLmt;					//stands for net output power limit  W
extern  unsigned  int   PLmtPatch;		//stands for compensate for output power limit  W
extern  unsigned  int   PPar;					//stands for power consumed by auxiliaries W
extern  unsigned  int   CVmax;				//stands for maximal cell unit voltage  0.01V
extern  unsigned  int   CVmin;				//stands for minumal cell unit voltage  0.01V
extern  unsigned  int   CMV1;					//stands for first cell module voltage	0.01V
extern  unsigned  int   CMV2;					//stands for second cell module voltage	0.01V
extern  unsigned  int   CMV3;					//stands for third  cell module voltage	0.01V
extern  unsigned  int   CMV4;					//stands for fourth cell module voltage	0.01V
//extern  unsigned  char  DelayCMP;     //Used for time counter for Ncp power up


extern  unsigned  char        Ncp;
extern  unsigned  char        frqR1;
extern  unsigned  char        frqR2;
extern  unsigned  char        modeCtrl;
extern  unsigned  char        stepCtrl;
extern  volatile  ByteFlags   TaskFlags;
extern  volatile  StateDef    FCEStatus;
extern  volatile  FCEStateD   StateDevice;
extern  volatile  ByteFlags   SysFlags;
extern  volatile  ByteFlags   ErrFlags;
extern unsigned int  perCANFCETimer;
extern unsigned char CANFCETrigger;															//stands for CANFCE trigger type
															 
 


volatile CAN_Message MsgRdCANVMS[CANVMS_RXD],MsgSdCANVMS[CANVMS_TXD];
volatile CAN_Message MsgRdCANFCE[CANFCE_RXD],MsgSdCANFCE[CANFCE_TXD];

const CAN_ID  CANVMS_Sd_ID[CANVMS_TXD] ={ID_FCE2VMSA,ID_FCE2VMSB,ID_FCE2VMSC,ID_FCE2VMSD,ID_FCE2VMSE,ID_FCE2VMSF,ID_DM1,ID_DM2,ID_DM3};
const CAN_ID  CANVMS_Rd_ID[CANVMS_RXD] ={ID_VMSStatus,ID_VMS2FCEHMS,ID_DM0};
const CAN_ID  CANFCE_Rd_ID[CANFCE_RXD]={ID_M1Msg0,ID_M2Msg0,ID_M3Msg0,ID_M4Msg0,ID_FCSCmd,ID_CaliSet};
const CAN_ID  CANFCE_Sd_ID[CANFCE_TXD]={ID_FCEP,ID_StCaMsg,ID_StAnMsg,ID_StCTMsg,ID_StSTMsg};

const unsigned int cntCANFCELmt=500;												//limit time counter for CANFCE wait 
const unsigned int cntCANVMSLmt=500;													//limit time counter for CANVMS wait  


#pragma CODE_SEG __NEAR_SEG NON_BANKED /* Interrupt section for this module. Placement will be in NON_BANKED area. */
#pragma TRAP_PROC

interrupt void CAN0_Rx_isr(void)
{
	CAN_Message temp;
	
	temp.ID.IDBYTES.ID0 = CAN0RXIDR0;               //read ID
  temp.ID.IDBYTES.ID1 = CAN0RXIDR1;
  temp.ID.IDBYTES.ID2 = CAN0RXIDR2;
  temp.ID.IDBYTES.ID3 = CAN0RXIDR3;
  
  temp.data[0] = CAN0RXDSR0;
  temp.data[1] = CAN0RXDSR1;
  temp.data[2] = CAN0RXDSR2;                      //download data
  temp.data[3] = CAN0RXDSR3;
  temp.data[4] = CAN0RXDSR4;
  temp.data[5] = CAN0RXDSR5;
  temp.data[6] = CAN0RXDSR6;
  temp.data[7] = CAN0RXDSR7;
  
  CAN0RFLG_RXF = 1;                               //clear flag
  
  CANVMS_DownLoad(temp);
}

interrupt void CAN1_Rx_isr(void)
{
	CAN_Message temp;
	
	temp.ID.IDBYTES.ID0 = CAN1RXIDR0;               //read ID
  temp.ID.IDBYTES.ID1 = CAN1RXIDR1;
  temp.ID.IDBYTES.ID2 = CAN1RXIDR2;
  temp.ID.IDBYTES.ID3 = CAN1RXIDR3;
  
  temp.data[0] = CAN1RXDSR0;
  temp.data[1] = CAN1RXDSR1;
  temp.data[2] = CAN1RXDSR2;                      //download data
  temp.data[3] = CAN1RXDSR3;
  temp.data[4] = CAN1RXDSR4;
  temp.data[5] = CAN1RXDSR5;
  temp.data[6] = CAN1RXDSR6;
  temp.data[7] = CAN1RXDSR7;
  
  CAN1RFLG_RXF = 1;                               //clear flag
  
  CANFCE_DownLoad(temp);
 }


interrupt void CAN0_Tx_isr(void)
{
	return;	
}

interrupt void CAN1_Tx_isr(void)
{
	return;	
}


interrupt void CAN0_Wake_isr(void)
{
  return; 
}

interrupt void CAN1_Wake_isr(void)
{
  return;
}

interrupt void CAN0_Err_isr(void)
{
  CAN0Init();
 }

interrupt void CAN1_Err_isr(void)
{
  CAN1Init();			
}
/************************************************************************/


#pragma CODE_SEG DEFAULT
void CANBUSInit(void)
  {
  CAN0Init();
  CAN1Init();
  CANMsgCfg();
  }
  
void CANVMSTrans(void)
  {
  unsigned char tempIndex;
  unsigned int  CANVMSTimer;
  for(tempIndex=0;tempIndex<CANVMS_TXD;tempIndex++)
    {
      CANVMSTimer=0;
      while(!CAN0TFLG&&CANVMSTimer<cntCANVMSLmt)CANVMSTimer++;                                        //wait for empty buffer
      CAN0TBSEL  = CAN0TFLG;                                    //select avilable buffer
  
      CAN0TXIDR0 = MsgSdCANVMS[tempIndex].ID.IDBYTES.ID0;
      CAN0TXIDR1 = MsgSdCANVMS[tempIndex].ID.IDBYTES.ID1;
      CAN0TXIDR2 = MsgSdCANVMS[tempIndex].ID.IDBYTES.ID2;                     
      CAN0TXIDR3 = MsgSdCANVMS[tempIndex].ID.IDBYTES.ID3;        //config ID
  
      CAN0TXDSR0 = MsgSdCANVMS[tempIndex].data[0];
      CAN0TXDSR1 = MsgSdCANVMS[tempIndex].data[1];
      CAN0TXDSR2 = MsgSdCANVMS[tempIndex].data[2];
      CAN0TXDSR3 = MsgSdCANVMS[tempIndex].data[3];                 
      CAN0TXDSR4 = MsgSdCANVMS[tempIndex].data[4];
      CAN0TXDSR5 = MsgSdCANVMS[tempIndex].data[5];
      CAN0TXDSR6 = MsgSdCANVMS[tempIndex].data[6];
      CAN0TXDSR7 = MsgSdCANVMS[tempIndex].data[7];               //upload data   

      CAN0TXDLR  = MsgSdCANVMS[tempIndex].length;                //set data length 8bytes
      CAN0TXTBPR = CAN0TBSEL;                                   //config proprity
      CAN0TFLG   = CAN0TBSEL;  
    }
  }
  
  void CANVMS_DownLoad(CAN_Message temp)
    { unsigned char  index,dataindex;
      CAN_ID i,j;
      j=temp.ID; 
      
      for(index=0;index<CANVMS_RXD;index++)
      {   
          i=MsgRdCANVMS[index].ID;
          
          if((i.IDBYTES.ID0==j.IDBYTES.ID0)&&(i.IDBYTES.ID1==(j.IDBYTES.ID1&0xE0)))
          {
            for(dataindex=0;dataindex<8;dataindex++ )MsgRdCANVMS[index].data[dataindex]= temp.data[dataindex];
            /*set flags according the msg ID*/
            /*if a time base message receieved enable the 14ms wait for sending message*/
            /*if a VMS command message receieved set a flag for main routine*/
            if(index==VMSStatus){EnableCANVMS;}
            else if(index==VMS2FCE)TaskVMSCmd=1;
            break; 
           } 
       }
    } 
    
     
    
void CANFCETrans(void)
  {
  unsigned int  CANFCETimer=0;
  unsigned char tempIndex;
  
  for(tempIndex=0;tempIndex<CANFCE_TXD;tempIndex++)
    {
      CANFCETimer=0;
      while(!CAN1TFLG&&CANFCETimer<cntCANFCELmt)CANFCETimer++;                                        //wait for empty buffer
      CAN1TBSEL  = CAN1TFLG;                                   //select avilable buffer
  
      CAN1TXIDR0 = MsgSdCANFCE[tempIndex].ID.IDBYTES.ID0;
      CAN1TXIDR1 = MsgSdCANFCE[tempIndex].ID.IDBYTES.ID1;
      CAN1TXIDR2 = MsgSdCANFCE[tempIndex].ID.IDBYTES.ID2;                     
      CAN1TXIDR3 = MsgSdCANFCE[tempIndex].ID.IDBYTES.ID3;                      //config ID
  
      CAN1TXDSR0 = MsgSdCANFCE[tempIndex].data[0];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣精品在线| 精品国产一区二区三区久久影院| 欧美日本韩国一区二区三区视频| 精品成人佐山爱一区二区| 亚洲天堂精品在线观看| 狠狠色丁香久久婷婷综| 欧美日韩一级黄| 亚洲日本欧美天堂| 国产毛片一区二区| 日韩一区二区精品葵司在线| 亚洲一区二区五区| 91极品美女在线| 日本一区二区三区高清不卡| 日本午夜精品一区二区三区电影| 91在线看国产| 国产精品美女久久久久aⅴ国产馆| 美女视频免费一区| 欧美一级夜夜爽| 日韩在线观看一区二区| 欧美中文字幕一区二区三区亚洲| 亚洲丝袜精品丝袜在线| 成人激情图片网| 国产精品视频一二三区| 国产精品一区二区久久精品爱涩 | 久久一区二区三区四区| 奇米一区二区三区av| 欧美疯狂性受xxxxx喷水图片| 亚洲一区二区三区四区五区中文| 日本精品视频一区二区| 亚洲欧美一区二区三区极速播放 | 精品视频123区在线观看| 国产精品无遮挡| 成人午夜av电影| 国产精品乱码一区二区三区软件 | 欧美日韩dvd在线观看| 亚洲高清久久久| 777午夜精品免费视频| 久久精品久久久精品美女| 亚洲精品一区二区三区蜜桃下载| 精品一区二区三区欧美| 久久久噜噜噜久噜久久综合| 国产精品一线二线三线精华| 日本一区二区三区dvd视频在线| 国产宾馆实践打屁股91| 国产精品你懂的在线欣赏| jiyouzz国产精品久久| 国产精品国产自产拍高清av王其| 91免费看片在线观看| 亚洲精品免费视频| 91精品中文字幕一区二区三区| 蜜臀av性久久久久av蜜臀妖精 | 日韩一卡二卡三卡国产欧美| 麻豆成人久久精品二区三区红| 久久伊人蜜桃av一区二区| 国产69精品久久777的优势| 中文字幕一区二区不卡| 欧美视频第二页| 国产麻豆精品一区二区| ●精品国产综合乱码久久久久| 欧美无砖砖区免费| 国内精品嫩模私拍在线| 精品国产一区二区国模嫣然| 国产精品剧情在线亚洲| 免费高清在线一区| 久久精品一二三| 色综合久久久久久久久久久| 日韩制服丝袜先锋影音| 国产欧美日韩亚州综合| 欧美高清hd18日本| 国产成人午夜高潮毛片| 亚洲动漫第一页| 欧美激情在线免费观看| 欧美日韩精品欧美日韩精品| 国产精品一二三四区| 亚洲综合成人在线视频| 久久精品夜色噜噜亚洲aⅴ| 欧美色电影在线| 国产iv一区二区三区| 日产精品久久久久久久性色| 中文字幕人成不卡一区| 欧美sm美女调教| 欧美日高清视频| www.日韩在线| 国产中文一区二区三区| 丝袜美腿亚洲综合| 依依成人综合视频| 国产日韩视频一区二区三区| 欧美夫妻性生活| 91福利精品视频| 99国产精品国产精品久久| 国产美女视频91| 精久久久久久久久久久| 日韩综合一区二区| 亚洲精品日产精品乱码不卡| 国产精品久久久久精k8 | 欧美亚洲国产一卡| 成人av网在线| 国产成人综合亚洲91猫咪| 秋霞电影一区二区| 亚洲国产精品欧美一二99| 国产精品久久久一区麻豆最新章节| 日韩精品一区二区三区在线观看| 欧美日本一区二区在线观看| 色一情一伦一子一伦一区| 成人av在线看| 成人蜜臀av电影| 成人av电影观看| 99综合电影在线视频| 成人av电影在线| 成人黄色一级视频| 成人国产一区二区三区精品| 波多野结衣在线一区| av成人免费在线观看| 成人免费毛片a| 91在线你懂得| 91电影在线观看| 欧美日高清视频| 日韩一区二区在线看| 精品国产一区二区精华| 久久精品夜色噜噜亚洲aⅴ| 久久久久久9999| 1024成人网| 亚洲国产乱码最新视频 | 日韩国产在线观看一区| 日韩精品电影一区亚洲| 麻豆精品精品国产自在97香蕉 | 欧美激情中文不卡| 成人免费小视频| 亚洲综合色成人| 五月综合激情网| 黄网站免费久久| 成人av综合一区| 在线观看精品一区| 日韩丝袜情趣美女图片| 国产午夜精品一区二区三区视频| 国产精品国产馆在线真实露脸 | 欧美日韩国产一级二级| 精品久久久久久久久久久院品网| 久久久久久夜精品精品免费| 中文字幕一区二区三区在线不卡| 亚洲午夜电影网| 精品一区二区在线观看| 成人黄页毛片网站| 欧美日韩精品一区二区三区蜜桃| 精品电影一区二区| 亚洲丝袜精品丝袜在线| 日本成人在线不卡视频| 国产宾馆实践打屁股91| 精品婷婷伊人一区三区三| 欧美哺乳videos| 亚洲三级小视频| 另类中文字幕网| 91在线一区二区| 欧美成人bangbros| 亚洲精品福利视频网站| 久久福利视频一区二区| 在线一区二区观看| 国产欧美日本一区二区三区| 日韩高清在线电影| www..com久久爱| 日韩免费视频一区二区| 亚洲美女在线一区| 国产乱码字幕精品高清av| 欧美色区777第一页| 欧美国产精品专区| 麻豆国产精品官网| 欧美亚州韩日在线看免费版国语版| 久久男人中文字幕资源站| 天天综合日日夜夜精品| 99久久夜色精品国产网站| 欧美本精品男人aⅴ天堂| 亚洲自拍偷拍综合| 99re亚洲国产精品| 国产亲近乱来精品视频| 裸体一区二区三区| 欧美视频精品在线观看| 亚洲日本va在线观看| 成人免费视频网站在线观看| 欧美tickle裸体挠脚心vk| 免费在线视频一区| 欧美日韩在线一区二区| 亚洲主播在线播放| 色婷婷综合视频在线观看| 国产精品久久久久影院| 国产成人啪午夜精品网站男同| 欧美v亚洲v综合ⅴ国产v| 日产国产高清一区二区三区 | 久久国产麻豆精品| 欧美酷刑日本凌虐凌虐| 亚洲自拍另类综合| 欧美在线啊v一区| 一个色妞综合视频在线观看| heyzo一本久久综合| 亚洲视频在线观看一区| 99国产精品国产精品毛片| 一区在线播放视频| 99久久99久久精品免费看蜜桃| 国产精品国产三级国产普通话蜜臀| 成人黄色免费短视频| 亚洲欧美日韩国产手机在线 |