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

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

?? cdr18uat.c

?? UART驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* == IDENTIFICATION ================================================== * * Copyright (C) 2005, Philips Semiconductors Nuernberg * * System           : Vega Family * Component        : any * Module           : Driver * Unit             : UART * File             : cdr18uat.c * *  @(#)   %filespec:  cdr18uat.c-9 % * *//* == HISTORY ========================================================= * * Name     Date        Ver     Action * -------------------------------------------------------------------- * tcmc_ore  2-Nov-2005     9   Make compile without RX_BUFFER set * tcmc_ore 27-Oct-2005     8   Add RX Buffer for Automated Test Tool * tcmc_hyu 30-Sep-2005     7   make UART work on VEGA_DEMOBLUE_PP board * tcmc_hyu 04-Mar-2005	    6   PR 497: set SYS2_UART_IER_MODEM in                                sys2_UART.ier register only when RTS/CTS * tcmc_hyu 04-Mar-2005     5   merged D76.1 with D54.3 * tcmc_hyu 20-Mar-2005 D76.1	updated for double slot demo. purpose	 * tcmc_afn 27-Jan-2005 D75.3   change TWO_LINE_BOARD to (NR_IOM_LINES>0) * tcmc_afn 27-Jan-2005 D75.2   Update and bug fix * tcmc_asa 13-Oct-2004 D75.1   update for TWO_LINE_BOARD * tcmc_asa	07-Nov-2001	re-rework after crosscheck * tcmc_asa	25-Oct-2001	rework after crosscheck * tcmc_asa	29-Jun-2001	part of HLP rework * tcmc_asa	04-Dec-2000	created, copied from D42 dr_uart.c *                                              *//*MPM:::DRIVER::UART:========================================== * * ABSTRACT: * * The functions in this module comprise the UART driver. * Some functions have got second names given by macro definitions * to replace functions of tclib.lib. * * Global functions to be called by other layers: * ---------------------------------------------- * - p_dr18_UARTTx        transmit a buffer of bytes (2nd name: putbuf) * - p_dr18_UARTRcv       receive one byte           (2nd name: _getkey) * - p_dr18_UARTTxWait    wait for completion of transmission * - p_dr18_UARTTx * - p_dr18_UARTRcv * - p_dr18_UARTTxWait * - p_dr18_UARTInterrupt  the UART interrupt service routine * - p_dr18_IOMInit * - p_arm_customer_fsi_io * * Layer local functions to be called from inside this layer: * ---------------------------------------------------------- * - p_dr18_UARTInit       initialize and activate the driver * - p_dr18_UARTHookOff * - p_dr18_UARTHookOn * * Module local functions to be called from inside this module: * ------------------------------------------------------------ * - p_dr18_UARTDefineCommand * - p_dr18_UARTDial * - p_dr18_UARTSearchCommand * - p_dr18_UARTRingOFF * - p_dr18_UARTRingON */#define cdr18_c/* == GLOBAL DECLARATIONS            ======================================= */#include "tclib.h"#define DECLARE_GLOBALS#ifndef PT_MODULE#include "bsd09cnf.h" /* component-globalal, system configuration */#include "bsd09ddl.h" /* messages and processes */#include "bdr02aud.h"#include "bmi01dat.h"#include "cap03def.h" /* xx_const.h */#endif#include "csys5os.h"#include "cos00int.h"#include "cdr08uat.h"#include "csys2vpb.h"#include "cds00adr.h"#define Delay(a)    __asm { nop;nop;nop;nop;nop;nop;nop;nop; } #define HKOF 1#define HKON 2#define RGOF 4#define RGON 5#define DIAL 6#define DR18_NB_DATA_SEND       5#define DR18_NB_DATA_SEND_DIAL  21#define DR18_NB_DATA_BUFFER     50/* == DECLARATION OF LOCAL DATA  =========================================== */#ifndef DR18_RX_BUFFER_SIZE#ifdef  AUTOMATED_TEST_TOOL#define DR18_RX_BUFFER_SIZE  100#endif#endif#ifdef DR18_RX_BUFFER_SIZEu8   u8_dr18_RxBuffer[DR18_RX_BUFFER_SIZE];u16 u16_dr18_RxBufferWriteIndex;u16 u16_dr18_RxBufferReadIndex;#define DR18_RX_BUFFER_EMPTY  (u16_dr18_RxBufferWriteIndex == \                                                 u16_dr18_RxBufferReadIndex)#define DR18_RX_BUFFER_FULL  (((u16_dr18_RxBufferWriteIndex + 1) % DR18_RX_BUFFER_SIZE) ==\                                                                u16_dr18_RxBufferReadIndex)#endif /* DR18_RX_BUFFER_SIZE */#define  u8_dr18_UARTRcvByte  u8_LastRxTerm  /* single byte receive buffer   */u8 * pu8_dr18_UARTTxJob;     /* a single transmission job queue        */u8   u8_dr18_UARTTxLen;     /* number of bytes remaining in the queue */#if (NR_IOM_LINES>0)u8 tab_HKOF[DR18_NB_DATA_BUFFER];u8 tab_HKON[DR18_NB_DATA_BUFFER];u8 tab_RGOF[DR18_NB_DATA_BUFFER];u8 tab_RGON[DR18_NB_DATA_BUFFER];u8 tab_DIAL[DR18_NB_DATA_BUFFER];u8 RX_Buffer[DR18_NB_DATA_BUFFER];u8 u8_dr18_NbDataSend = 0;u8 u8_dr18_NbDataRX = 0;u8 u8_dr18_CmdSend = 0;u8 u8_dr18_CmdRcvd = 0;#endif/* == DECLARATION OF FUNCTION PROTOTYPES =================================== */void p_dr18_UARTDefineCommand(void);void p_dr18_UARTRingON(void);void p_dr18_UARTRingOFF(void);/* ==  Code section for double slot demo. purpose only.===================== */#ifdef DATA_APP_DEMOextern void p_hm17_RxDemoDataFromUART(u8 u8_Byte);#endif /* end of DATA_APP_DEMO */#if (NR_IOM_LINES>0) || (defined UART)/* FUNCTIONAL DESCRIPTION * * This function initializes the UART driver  * * INTERFACE DECLARATION */int p_dr18_UARTInit(u32 u32_Baudrate, int RtsCts){  const u8 u8_WLen = 8;  const u8 u8_Parity = 0;  const u8 u8_Stop = 1;  /* Local variables, data, etc. **********************************************/  u8  u8_Status=0;  u16 u8_Divider=0;#if (NR_IOM_LINES>0)    p_dr18_UARTDefineCommand();#endif     if (u32_Baudrate>0)   {    u8_Divider = 460800 / u32_Baudrate;  }  u8_Status |= ((u8_Divider==0) << 4);  u8_Status |= (( (u8_WLen<5) | (u8_WLen>8)) << 3);  u8_Status |= ((u8_Stop>1) << 1);  if (!u8_Status)   {    *(volatile u8 *)&sys0_SCU.pb_pcon_on |= SYS0_SCU_UART_POWER_MASK;    *(volatile u16 *)&sys2_GPIO.mux1      |= SYS2_GPIO1_UART_SEL;    *(volatile u8 *)&sys2_UART.global     = SYS2_BLRES_UART | 1;    Delay(13);                          /* duration of reset (worst case)     */    *(volatile u8 *)&sys2_UART.global     = 1; /* set reserved bit 0 to enable UART  */        if (RtsCts)     {      Delay(4);      *(volatile u16 *)&sys2_GPIO.mux1    |= SYS2_GPIO1_BIFRTS_SEL_RTS;      Delay(4);      *(volatile u16 *)&sys2_GPIO.mux1    &= ~SYS2_GPIO1_BIFRTS_SEL_BIF;      Delay(4);      *(volatile u16 *)&sys2_GPIO.mux1    |= SYS2_GPIO1_CTS_SEL;      *(volatile u8 *)&sys2_UART.mcr     = SYS2_UART_MCR_AUTO                        | SYS2_UART_MCR_RTS;   //RTS is low-active (as CTS)  */    }    else     {      *(volatile u8 *)&sys2_UART.mcr     &= ~SYS2_UART_MCR_AUTO;    }#if defined(Pin80onDemoBlue)    *(volatile u16 *)&sys2_GPIO.mux1  |= SYS2_GPIO1_CTS_SEL;      *(volatile u16 *)&sys2_GPIO.mux3 |= SYS2_GPIO3_UART_SWAP;#endif        *(volatile u8 *)&sys2_UART.fcr       = SYS2_UART_FCR_TXRST | SYS2_UART_FCR_RXRST;    *(volatile u8 *)&sys2_UART.ier        = SYS2_UART_IER_RX_INT		    //enable RX interrupt of the Uart                            | SYS2_UART_IER_TX_INT 		//enable TX interrupt of the Uart      | SYS2_UART_IER_RXLINE;    if (RtsCts)     {	/* PR 497: Problem occurs on the VegaLiteFlash FT software	   when this bit is set. */       *(volatile u8 *)&sys2_UART.ier |= SYS2_UART_IER_MODEM;    }          *(volatile u32 *)&sys0_ICU.irq_enbs    = SYS0_ICU_INT_UART_IRQ;	//enable Uart interrupt    Delay(4);    *(volatile u8 *)&sys2_UART.lcr        = SYS2_UART_LCR_DIVENB;    // sys2_UART.dlh     = (u8_Divider/256);    *(volatile u8 *)&sys2_UART.ier        = (u8)(u8_Divider >> 8);    // sys2_UART.dll     = (u8_Divider%256);    *(volatile u8 *)&sys2_UART.thr        = (u8)(u8_Divider & 0x00ff);    Delay(4);				//4 cycles between 2 write accesses to the same register    *(volatile u8 *)&sys2_UART.lcr        = 0;			//select thr (DIVENB=0)    Delay(4);    *(volatile u8 *)&sys2_UART.lcr=        ((u8_Parity!=0)*(u8_Parity-1)*SYS2_UART_LCR_PARITY_EVEN)  |        ((u8_Parity!=0)*SYS2_UART_LCR_PARITYEN)                |        ((u8_Stop-1)*SYS2_UART_LCR_STOP)                       |        ((u8_WLen-5) & 0x03);  }  return u8_Status;} /* p_dr18_UARTInit */#endif  /* (NR_IOM_LINES>0) || (defined UART) */#if (NR_IOM_LINES>0)/* FUNCTIONAL DESCRIPTION * * This function initialze the command * * INTERFACE DECLARATION */void p_dr18_UARTDefineCommand(void){  // u8 u8_NbLoop = 0;  /*Define tab command "HKOF" *//*   for(u8_NbLoop = 0 ; u8_NbLoop < DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	tab_HKOF[u8_NbLoop]= 0;	*/  memset(tab_HKOF, 0, DR18_NB_DATA_BUFFER);  strcpy((char *)tab_HKOF,"HKOF");      /*Define tab command "HKON" *//*  for(u8_NbLoop = 0 ; u8_NbLoop < DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	tab_HKON[u8_NbLoop]= 0;		*/  memset(tab_HKON, 0, DR18_NB_DATA_BUFFER);  strcpy((char *)tab_HKON,"HKON");   /*Define tab command "DIAL192.168.050.001." *//*  for(u8_NbLoop = 0 ; u8_NbLoop < DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	tab_DIAL[u8_NbLoop]= 0;		*/  memset(tab_DIAL, 0, DR18_NB_DATA_BUFFER);  strcpy((char *)tab_DIAL,"DIAL192.168.050.001.");    /*Define tab command "RGOF" *//*  for(u8_NbLoop = 0 ; u8_NbLoop < DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	tab_RGOF[u8_NbLoop]= 0;		*/  memset(tab_RGOF, 0, DR18_NB_DATA_BUFFER);  strcpy((char *)tab_RGOF,"RGOF");    /*Define tab command "RGON" *//*  for(u8_NbLoop = 0 ; u8_NbLoop < DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	tab_RGON[u8_NbLoop]= 0;		*/  memset(tab_RGON, 0, DR18_NB_DATA_BUFFER);  strcpy((char *)tab_RGON,"RGON");  	  /*initialize the rx buffer*//*  for(u8_NbLoop=0 ; u8_NbLoop<DR18_NB_DATA_BUFFER ;u8_NbLoop++)  	RX_Buffer[u8_NbLoop]= 0; 	*/  memset(RX_Buffer, 0, DR18_NB_DATA_BUFFER);   u8_dr18_NbDataRX = 0;  u8_dr18_CmdRcvd = RGOF; 	  return;}/* p_dr18_UARTDefineCommand *//* FUNCTIONAL DESCRIPTION * * This function start the sending of the off HOOK * * INTERFACE DECLARATION */void p_dr18_UARTHookOff(void){  u8_dr18_CmdSend = HKOF;  u8_dr18_NbDataSend = 0;  VOLATILE(sys2_UART.thr,u8) = tab_HKOF[u8_dr18_NbDataSend]; }/* p_uart_HKOF *//* FUNCTIONAL DESCRIPTION * * This function start the sending of the on HOOK * * INTERFACE DECLARATION */void p_dr18_UARTHookOn(void){  u8_dr18_CmdSend = HKON;  u8_dr18_NbDataSend = 0;  VOLATILE(sys2_UART.thr,u8) = tab_HKON[u8_dr18_NbDataSend]; }/* p_uart_HKON *//* FUNCTIONAL DESCRIPTION * * This function start the sending of the Dial IP * * INTERFACE DECLARATION */ void p_dr18_UARTDial(void){  u8_dr18_CmdSend = DIAL;  u8_dr18_NbDataSend = 0;  VOLATILE(sys2_UART.thr,u8) = tab_DIAL[u8_dr18_NbDataSend]; }/* p_dr18_UARTDial *//* FUNCTIONAL DESCRIPTION * * This function check the uart command, receive * * INTERFACE DECLARATION */void p_dr18_UARTSearchCommand(void){  // u8 u8_NbLoop=0;  if(u8_dr18_NbDataRX >= 5)	  {      if(strcmp((char *)RX_Buffer,"RGON") == 0 )      {   	  u8_dr18_CmdRcvd = RGON;   	  /*initialize the rx buffer*/  	  /* for(u8_NbLoop=0 ; u8_NbLoop<DR18_NB_DATA_BUFFER ;u8_NbLoop++)  		  RX_Buffer[u8_NbLoop]= 0; 	*/           memset(RX_Buffer, 0, DR18_NB_DATA_BUFFER);   	  p_dr18_UARTRingON();   	      }      if(strcmp((char *)RX_Buffer,"RGOF") == 0)      {   	  u8_dr18_CmdRcvd = RGOF;   	  /*initialize the rx buffer*/  	  /* for(u8_NbLoop=0 ; u8_NbLoop<DR18_NB_DATA_BUFFER ;u8_NbLoop++)  		  RX_Buffer[u8_NbLoop]= 0;   */          memset(RX_Buffer, 0, DR18_NB_DATA_BUFFER);   	  p_dr18_UARTRingOFF();   	      }      u8_dr18_NbDataRX = 0;   	  } //if u8_dr18_NbDataRX >= 5  else if (u8_dr18_NbDataRX == 1) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合免费观看高清完整版在线 | 成人深夜在线观看| 色综合久久精品| 精品国产区一区| 亚洲午夜国产一区99re久久| 国产一区二区三区国产| 欧美亚洲综合一区| 欧美激情综合在线| 久久精品99久久久| 欧美日韩免费观看一区三区| 中文字幕制服丝袜一区二区三区 | 亚洲视频综合在线| 国产专区欧美精品| 日韩一区二区三区电影| 亚洲一区二区高清| www.成人在线| 亚洲国产精华液网站w | 久久久久国产一区二区三区四区 | 9191久久久久久久久久久| 国产精品午夜在线观看| 麻豆精品在线播放| 欧美一级黄色片| 午夜伦理一区二区| 欧美欧美欧美欧美首页| 亚洲黄色性网站| 99久久婷婷国产综合精品电影| 久久久99精品免费观看| 国产成人综合在线播放| 久久免费视频色| 韩国av一区二区| 久久欧美一区二区| 高清不卡一区二区| 亚洲欧洲99久久| 91美女在线视频| 亚洲综合久久久| 在线观看日韩毛片| 亚洲午夜免费视频| 欧美肥妇毛茸茸| 久久成人久久爱| 国产亚洲婷婷免费| www.欧美色图| 亚洲va欧美va国产va天堂影院| 欧美在线高清视频| 日韩中文字幕av电影| 91精品综合久久久久久| 激情都市一区二区| 亚洲国产精品精华液ab| 色综合天天视频在线观看| 亚洲综合免费观看高清完整版| 欧美三级电影网| 蜜桃视频免费观看一区| 久久久影视传媒| eeuss鲁片一区二区三区| 亚洲丝袜精品丝袜在线| 51午夜精品国产| 国产精品一区二区久久不卡| 中文字幕一区二区三区四区不卡 | 成人sese在线| 亚洲午夜三级在线| 欧美不卡123| 成人av在线播放网站| 亚洲一区二区3| 日韩视频在线你懂得| 成人免费高清视频| 日韩中文字幕91| 中文字幕欧美一区| 91精品国产91久久久久久一区二区 | 欧美伊人久久久久久久久影院| 美女诱惑一区二区| 亚洲色图另类专区| 日韩美女一区二区三区| 波多野结衣中文字幕一区二区三区 | 韩国一区二区三区| 亚洲免费av观看| 26uuu国产电影一区二区| 97精品超碰一区二区三区| 免费高清在线一区| 亚洲精品成人悠悠色影视| 2023国产精华国产精品| 欧美日韩视频一区二区| 成人动漫一区二区在线| 蜜桃传媒麻豆第一区在线观看| 国产精品成人午夜| 国产婷婷色一区二区三区| 欧美色视频在线观看| www.99精品| 国产精品12区| 蜜桃一区二区三区四区| 亚洲成人tv网| 亚洲精品中文在线| 欧美国产精品专区| 2024国产精品| 91麻豆精品国产91久久久久久| 色八戒一区二区三区| 懂色av一区二区三区免费观看| 久久精品国产秦先生| 亚洲va欧美va人人爽| 亚洲最快最全在线视频| 日韩一区有码在线| 国产精品久久久久精k8 | 欧美精品一区男女天堂| 欧美年轻男男videosbes| 色香色香欲天天天影视综合网| 国产成人精品1024| 国产精品一区二区男女羞羞无遮挡| 日韩制服丝袜先锋影音| 午夜成人免费视频| 玉足女爽爽91| 亚洲一区二区三区自拍| 成人欧美一区二区三区在线播放| 欧美精品一区二区三区四区| 日韩亚洲电影在线| 精品国产一区二区国模嫣然| 欧美一级理论性理论a| 日韩欧美在线一区二区三区| 欧美日韩亚洲不卡| 欧日韩精品视频| 欧美精品一卡两卡| 欧美一区二区播放| 精品久久五月天| www国产亚洲精品久久麻豆| 亚洲精品在线电影| 中文字幕免费观看一区| 亚洲欧洲性图库| 亚洲欧美成aⅴ人在线观看| 综合电影一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 综合久久久久久| 亚洲另类在线一区| 亚洲高清一区二区三区| 蜜桃av一区二区三区电影| 久久国产尿小便嘘嘘尿| 韩国午夜理伦三级不卡影院| 精品一区二区在线播放| 国产精品99精品久久免费| av在线一区二区| 欧美日韩国产系列| 精品久久久久一区二区国产| 久久久久综合网| 亚洲欧美日韩国产另类专区| 亚洲国产一二三| 精品亚洲porn| av电影在线观看一区| 欧美日韩一二区| 国产午夜一区二区三区| 亚洲视频在线一区观看| 偷窥少妇高潮呻吟av久久免费| 久久爱另类一区二区小说| 国产成人在线视频免费播放| 色八戒一区二区三区| 欧美v日韩v国产v| 亚洲女与黑人做爰| 久久99国产精品久久| 成人高清av在线| 日韩一级视频免费观看在线| 中文字幕电影一区| 日韩国产成人精品| 懂色av一区二区夜夜嗨| 在线综合亚洲欧美在线视频| 国产精品视频看| 美洲天堂一区二卡三卡四卡视频| 不卡一区二区三区四区| 日韩欧美国产小视频| 亚洲欧美日韩久久精品| 国产河南妇女毛片精品久久久 | 不卡的av中国片| 日韩欧美一级二级三级久久久| 国产精品久久久久久亚洲毛片| 偷窥国产亚洲免费视频| 91在线小视频| 日韩欧美视频一区| 亚洲一区二区三区四区在线免费观看| 国内精品第一页| 欧美一级理论片| 亚洲不卡一区二区三区| 91一区在线观看| 国产偷国产偷亚洲高清人白洁| 五月天视频一区| 在线视频亚洲一区| 国产精品视频麻豆| 国产福利精品一区二区| 欧美一区二视频| 午夜视频一区在线观看| 在线亚洲+欧美+日本专区| 欧美激情一区二区| 国产一区二区三区高清播放| 日韩午夜电影在线观看| 日本不卡在线视频| 欧美理论电影在线| 亚洲国产成人91porn| 色婷婷国产精品| 亚洲免费色视频| 91网站最新地址| 亚洲少妇屁股交4| 波多野结衣中文字幕一区二区三区| 久久久www成人免费毛片麻豆| 韩国精品一区二区| 久久一区二区视频| 国产精品羞羞答答xxdd| 久久久777精品电影网影网|