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

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

?? lintongxun.cpp

?? LIN通訊的基本步驟
?? CPP
字號:





/*define*/
#define MAX_DATA      1               // Max bytes lin frame data

#define SCI_BAUDRATE  19200           // SCI baud rate    
#define SCI_CLOCK     200 0000         // Bus clock in Hz     

#define EVER (;;)   

#define FALSE -1

#define TRUE 0

#define DEBOUNCE 1                                   /* 20.5ms x (1+1) = 41ms */
#define LOW_POWER 195                                /* 20.5ms x (195+1) = 4s */


l_bool sleep_mode = 0;

static l_u16  previous_start_time = 0;      /* Wraps around but usage is safe */

enum lin_state { IDLE, _BREAK, SYNCH, PROTECTED_IDENTIFIER, DATA_0, DATA_1,    
                 DATA_2, DATA_3, DATA_4, DATA_5, DATA_6, DATA_7, CHECKSUM }; 

struct message {   
  unsigned char identifier;   
  unsigned char data_field[MAX_DATA];   
};   
   
struct frame {   
  unsigned char protected_id;   
  unsigned char data[MAX_DATA];   
  unsigned char check;   
  enum lin_state state;   
  unsigned char error;   
};   

struct frame rx;  

// Functions    
/////////////////////////////////////////////////////////////////////////////////////////    
void LINInit(void);   
Bool LINGetMsg(Bool get_data, struct  message *msg);   
Bool LINSendMsg(Bool master, Bool send_data, struct message msg);   
enum lin_state LINCheckState(void);   




/*LIN初始化*/
void LINInit(void)   
{   
   
  int sbr,i;   
     
  sbr=(SCI_CLOCK/SCI_BAUDRATE/16);                           //設置波特率
  SCI1BDH =(unsigned char)(sbr>>8);   
  SCI1BDL =(unsigned char)sbr;   

  SCI1C2 =0x2C;                                              //SCI中斷使能
  // Break character is 13 or 14 bit long    
  SCI1S2=0x04;                                               // 設置中斷字節長度 (13或14位)   
  // Initializes LIN receive frames    
  rx.protected_id=0;                                         //初始化LIN的接收幀
  rx.state=IDLE;   
  rx.error=0;   
  rx.check=0;  


 
  for (i=0;i<MAX_DATA;I++) 
  	msg- FALSE; 
  return PROTECTED_IDENTIFIER) 
  if (get_data)   
  {   
    if(rx.state == CHECKSUM)    
    {   
      for(i = 0; i < MAX_DATA; i++)   
        msg->data_field[i] = rx.data[i];   
      rx.state = IDLE;   
    }   
    else   
      for(i = 0; i < MAX_DATA; i++)   
        msg->data_field[i] = 0;   
  }         
  return(TRUE);   
        
}   





/*SCI接收中斷子程序*/
interrupt void SCI1_RX(void)                                 // SCI 的接收中斷子程序
{    
    
  if(!LINGetChar())           // 如果LIN  未接收到字符 
  {   
    rx.error = 1;   
    rx.state = IDLE;   
  }   
     
} 




/*LIN發送字符子程序*/
Bool LINSendChar(Bool brk, unsigned char ch)                               // LIN的發送字符子程序  
{   
   
  // Waits until transmit data registry is empty (TDRE=1)    
  while(!(SCI1S1&0x80))   
    ; 

  
  // If break field, transmits one break character (13-14 bits of dominant value)     
  if(brk)    
  {   
    SCI1C2 |= 0x01;   
    SCI1C2 &= ~0x01;   
  }   
  else   
    SCI1D = ch;   
  return(TRUE);   






/*LIN  發送校驗子程序*/
Bool LINCheckSend(enum lin_state status, unsigned char val)                  //LIN發送校驗發送子程序
{   
   
  // While until sci data has been received     
  while(rx.state < status)   
    if(rx.error)   
      return(FALSE);   
       
  switch(status)    
  {   
    case _BREAK:   
    case SYNCH:   
      break;   
         
    case PROTECTED_IDENTIFIER:   
      if(rx.protected_id != val)   
        return(FALSE);   
      break;   
           
    case DATA_0:   
    case DATA_1:   
    case DATA_2:   
    case DATA_3:   
    case DATA_4:   
    case DATA_5:   
    case DATA_6:   
    case DATA_7:   
      if(rx.data[status-DATA_0] != val)   
        return(FALSE);   
      break;   
           
    case CHECKSUM:   
      if(rx.check != val)   
        return(FALSE);   
      break;   
           
  }   
  return(TRUE);   
     
}   






/*LIN發送幀子程序*/
Bool LINSendMsg(Bool master, Bool send_data, struct message msg)             // LIN 發送幀子程序 
{   
   
  unsigned char check_sum, parity_id, i;   
     
  rx.error = 0;   
     
  if(master)    
  {   
    // Sends break feald    
    if(!LINSendChar(TRUE, 0x00))   
      return(FALSE);   
    // Check break sending    
    if(!LINCheckSend(_BREAK, 0x00))   
      return(FALSE); 
	
    // Sends synch feald    
    if(!LINSendChar(FALSE, 0x55))   
      return(FALSE);   
    // Checks synch sending    
    if(!LINCheckSend(SYNCH, 0x55))   
      return(FALSE); 
	
    parity_id=LINCalcParity(msg.identifier);   
    // Sends protected identifier field    
    if(!LINSendChar(FALSE, parity_id))   
      return(FALSE);   
    // Checks protected identifier sending    
    if(!LINCheckSend(PROTECTED_IDENTIFIER, parity_id))   
      return(FALSE);     
  }     

    if(send_data)   
  {   
  
    for(i=0; i < MAX_DATA; i++)    
    {   
      // Sends data field     
      if(!LINSendChar(FALSE, msg.data_field[i]))   
        return(FALSE);   
      // Checks data sending    
      if(!LINCheckSend(DATA_0+i, msg.data_field[i]))   
        return(FALSE);    
    }  
	
    check_sum = LINCalcChecksum(msg.data_field);   
    // Sends checksum field    
    if(!LINSendChar(FALSE, check_sum))   
      return(FALSE);   
    // Checks checksum sending    
    if(!LINCheckSend(CHECKSUM, check_sum))   
      return(FALSE);   
    rx.state = IDLE;   
  }   

   
  return(TRUE);   
   
}   
   




  



/*LIN 校驗狀態*/
enum lin_state LINCheckState(void)                             // LIN 的校驗狀態(結果)  
   
  return rx.state;     
     
}   
   


/*校驗是否為睡眠模式*/
void CheckLowPower(void)
{
    l_u16 status;

    status = l_ifc_read_status_i1();                
                                                                /* Sleep command received? */
    if ((status & 0x0008)== L_SLEEP_REQUEST)        /* 判斷是否為睡眠模式*/
    {
        LIN_EN_PIN = 0;      /* yes, disable MC33399 LIN interface turn off */
                             /* LT1121 to reache low power consumption */
    }

    if ((status & 0x00FF) == 0x00)                     /* No activity on LIN? */
    {
        low_power_delay--;                      /* yes, decrement the counter */
    }
    else
    {
        low_power_delay = LOW_POWER;
    }
    if (low_power_delay == 0)            /* no activity on LIN for 4 seconds? */
    {
        LIN_EN_PIN = 0;        /* yes, disable MC33399 LIN interface turn off */
                               /* LT1121 to reache low power consumption */
    }
}




/*校驗返回值*/
void Check (l_bool return_value)
{
    if (return_value)
    {
        NodeFailure();
    }
}


/*返回值不正確進入死循環*/
void NodeFailure (void)
{
    for EVER                                      /* To avoid warning message */
    {
        /* forever */
    }
}




/*進入睡眠模式
*/void GotoSleep (void)
{
    while (l_sch_tick_i1() != 1)                                 /* one round */
    {
        BusyWaitUntilNextPeriod();
    }
    l_ifc_goto_sleep_i1();                         /* send the sleep commnand */
    sleep_mode = 1;                                /* set the sleep mode flag */
}





void BusyWaitUntilNextPeriod (void)
{
    l_u16         t_now;                    /* The time counter value for now */
    l_u16         elapsed;    /* Time elapsed since previous ideal start time */
    do
    {
        #ifdef PET_WATCHDOG
        PET_WATCHDOG();
        #endif
        
        t_now   = l_get_us_counter();
        elapsed = (l_u16) (t_now - previous_start_time);
    }
    while (elapsed < HW_DELAY);
    
    previous_start_time += HW_DELAY;
   /* This construct avoids time drift, previous_start_time = t_now, wouldn't */
}







/*主函數  main */
void main (void)
{
    l_u8   button_request_id = 0;
    l_bool result;
    
    low_power_delay = LOW_POWER;          /* initialize the low power counter */     
    BUTTON_DDR = 0;                            /* set the button pin as input */
    
    LED_DDR |= LED_MASK;                            /* set LED port as output */
    LED_PORT &= ~LED_MASK;                                /* turn the LED off */
  
    LIN_EN_DDR = 1;                           /* set LIN enable pin as output */
    LIN_EN_PIN = 1;                             /* enable 33399 LIN interface */
    
    init_target();
    result = l_sys_init();
    Check(result);
	
    l_ifc_init_i1();
    ENABLE_INTS();  	                                /* turn on interrupts */
    result = l_ifc_connect_i1();
    Check(result);
    
    TSC = 0x00;                                         /* timer prescaler /1 */
    TSC &= ~(0x20);                                            /* start timer */
    
    l_u8_wr_SlaveRespB0_demo_net(0x81);             /* set the slave response */    

    for EVER
    {
        PET_WATCHDOG();
        
        if (l_flg_tst_res_done())        /* conflict resolving done flag set? */
        {
                                             /* yes, clear the slave response */
            l_u8_wr_SlaveRespB0_demo_net(0x80);  
            l_flg_clr_res_done();                           /* clear the flag */
        }
        
        if (TSC & 0x80)                              /* is overflow flag set? */
        {
            TSC &= ~(0x80);                                  /* yes, clear it */
            count++;                                 /* used for LED flashing */
            ReadButton();                       /* read button on button port */
            LedDisplay();                          /* update LEDs on LED port */
            LinResponse();                            /* provide LIN response */
            CheckLowPower();                      /* check the low power mode */            
        }
    }
}



void main (void)
{
/* Initialize the LIN interface */
	if (l_sys_init ())
		{
		/* The init of the LIN software failed */
		}
	else
		{
			l_ifc_init_MyLinIfc (); /* Initialize the interface */
			if (l_ifc_connect_MyLinIfc ())
				{
					/* Connection of the LIN interface failed */
				}
			else
				{
					/* Connected, now ready to send/receive set the normal
					/* schedule to run from beginning for this specific interface */
					l_sch_set_MyLinIfc (MySchedule1, 0);
				}
			}
		
		start_main_application (); /* Ready with init, start actual applic */
		}
	
		/* main */
		/* 10 ms based on the minimum LIN tick time, in LIN description file... */
		void main_application_10ms (void)
		{
			/* Do some application specific stuff... */
			/* Just a small example of signal reading and writing */
			if (l_flg_tst_RxInternalLightsSwitch ())
				{
					l_u8_wr_InternalLightsRequest (l_u8_rd_InternalLightsSwitch());
					l_flg_clr_RxInternalLightsSwitch ();
				}	
			/* In-/output of signals, do not care about the return value, as we
			/* will never switch schedule anyway... */
			(void) l_sch_tick_MyLinIfc();
	} /* main_application_10ms */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产成人久久av盗摄| 风间由美一区二区av101| 欧美日免费三级在线| 亚洲精品成人天堂一二三| 欧美伊人久久大香线蕉综合69| 一区二区三区精品视频在线| 欧美日韩久久一区| 青娱乐精品视频在线| 日韩三级在线观看| 国产精品综合二区| 日韩伦理av电影| 欧美精品v日韩精品v韩国精品v| 日韩av二区在线播放| 久久免费电影网| 成人app在线观看| 亚洲成人黄色影院| 精品国产91乱码一区二区三区 | 国产永久精品大片wwwapp| 久久久精品天堂| 日本精品视频一区二区三区| 日日摸夜夜添夜夜添精品视频| 久久午夜国产精品| 色999日韩国产欧美一区二区| 日日摸夜夜添夜夜添精品视频| 久久精品亚洲精品国产欧美kt∨| 99精品视频免费在线观看| 日韩精品乱码免费| 国产精品久久久久久久久动漫| 欧美日韩综合色| 国产成人在线视频网站| 亚洲国产精品久久人人爱| 欧美mv日韩mv国产网站| 91在线国产观看| 国产呦精品一区二区三区网站| 亚洲夂夂婷婷色拍ww47| 91精品国产91久久久久久最新毛片| 粉嫩av一区二区三区在线播放| 在线观看不卡视频| 国产精品综合网| 午夜国产精品影院在线观看| 国产亚洲精品免费| 91.com视频| 色94色欧美sute亚洲线路一ni| 国产一区二区电影| 偷拍一区二区三区四区| 中文字幕视频一区二区三区久| 精品国产亚洲在线| 在线成人av网站| 欧洲一区二区三区免费视频| 国产精品一二三| 麻豆国产欧美一区二区三区| 亚洲专区一二三| 国产精品久久夜| 久久久久久久性| 亚洲精品一区二区在线观看| 777奇米成人网| 91免费版在线| 成人av免费在线| 国产精品一区二区在线播放 | www.亚洲在线| 国产在线精品国自产拍免费| 蜜臀a∨国产成人精品| 亚洲成人动漫在线观看| 亚洲精选在线视频| 亚洲精选一二三| 亚洲日本电影在线| 国产精品久久久久久久久动漫 | 成人精品高清在线| 国内精品久久久久影院薰衣草| 日本强好片久久久久久aaa| 亚洲一区二区三区精品在线| 一区二区三区视频在线看| 亚洲精品日产精品乱码不卡| 亚洲欧美国产三级| 一区二区三区久久| 亚洲资源中文字幕| 肉肉av福利一精品导航| 午夜影院久久久| 日韩成人午夜电影| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产成人高清视频| 国产馆精品极品| 成人精品国产免费网站| 99久久99久久免费精品蜜臀| 91亚洲大成网污www| 色网站国产精品| 欧美三级午夜理伦三级中视频| 欧美日韩国产片| 欧美xxxx在线观看| 久久精品人人做人人爽97| 国产精品久久久久久久久果冻传媒| 国产精品你懂的在线欣赏| 亚洲特级片在线| 三级欧美在线一区| 国产一区二区在线观看免费| 成人免费福利片| 欧美日韩一区在线观看| 日韩午夜激情电影| 国产嫩草影院久久久久| 亚洲欧美国产三级| 免费高清在线一区| 成人黄色在线网站| 欧美亚州韩日在线看免费版国语版| 3d成人动漫网站| 国产精品免费看片| 午夜精品久久一牛影视| 国产激情91久久精品导航| 91久久线看在观草草青青| 日韩一区二区精品葵司在线| 久久精品一二三| 亚洲夂夂婷婷色拍ww47| 韩国在线一区二区| 欧洲色大大久久| 久久久青草青青国产亚洲免观| 亚洲欧美日韩电影| 精品亚洲国产成人av制服丝袜| 成人精品国产福利| 欧美一级电影网站| 国产精品网站在线| 免费在线视频一区| 色综合天天综合狠狠| 欧美精品一区二区三区视频| 亚洲欧美偷拍三级| 国产专区欧美精品| 欧美日韩三级在线| 国产精品久久久久7777按摩| 狂野欧美性猛交blacked| 99久久国产综合色|国产精品| 精品久久久久久最新网址| 一区二区三区日韩精品| 国产成人综合在线| 91麻豆精品国产综合久久久久久| 国产精品久久久久久久午夜片| 免费不卡在线观看| 色天天综合色天天久久| 国产人妖乱国产精品人妖| 三级亚洲高清视频| 在线观看国产91| 国产精品久久影院| 国产乱淫av一区二区三区 | 精品蜜桃在线看| 亚洲另类色综合网站| 福利视频网站一区二区三区| 日韩一二在线观看| 亚洲成人1区2区| 99精品欧美一区二区三区小说 | 91一区一区三区| 国产亚洲人成网站| 久久电影网站中文字幕| 欧美男同性恋视频网站| 悠悠色在线精品| 一本色道久久综合狠狠躁的推荐| 国产婷婷一区二区| 精品一区二区三区久久| 欧美一级片在线观看| 亚洲成人777| 欧美午夜电影在线播放| 成人欧美一区二区三区在线播放| 国产乱码精品一区二区三区五月婷| 日韩视频一区在线观看| 三级不卡在线观看| 欧美高清视频不卡网| 五月天激情综合网| 欧美裸体一区二区三区| 日韩精品免费专区| 日韩一区二区影院| 免费人成网站在线观看欧美高清| 欧美日韩三级在线| 人妖欧美一区二区| 精品动漫一区二区三区在线观看| 麻豆精品精品国产自在97香蕉| 日韩欧美亚洲国产另类 | 国产精品一区二区黑丝| 久久久久久久久久久电影| 国内精品写真在线观看| 国产亚洲欧美日韩日本| 成人av电影在线观看| 亚洲乱码国产乱码精品精小说 | 中文字幕日韩精品一区| 成人午夜av影视| 一区二区在线免费观看| 欧美精品乱码久久久久久按摩| 日日摸夜夜添夜夜添国产精品| 日韩视频在线永久播放| 极品少妇xxxx精品少妇偷拍 | 成人精品视频网站| 一区二区在线看| 欧美乱熟臀69xxxxxx| 狠狠色丁香婷婷综合| 国产女同互慰高潮91漫画| 色噜噜夜夜夜综合网| 日韩专区欧美专区| 久久―日本道色综合久久| 不卡在线观看av| 亚洲第一在线综合网站| 欧美精品一区二区蜜臀亚洲| 99精品视频在线观看免费| 亚洲va欧美va人人爽午夜| 国产亚洲欧洲997久久综合| 91久久精品网|