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

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

?? uart.c

?? C語言源代碼及相關資料
?? C
?? 第 1 頁 / 共 3 頁
字號:
		}
		if (uiParaData[Parity] > 4) {
			uiParaData[Parity] = 0;
		}
		if (uiParaData[RtsControl] != 0) {	
			uiParaData[RtsControl] = 0;
		}
		
		if (OPERATE_FAIL == (__uartBandRate(PUartInfo,uiParaData[BaudRate]))) {
#if defined(UART_SEMCONTROL)
			OSSemPost(PUartInfo->pUartSem);
#else
			OS_EXIT_CRITICAL();
#endif // end #if defined(UART_SEMCONTROL)
			return UART_NOK;
		}
		if(OPERATE_FAIL == (__uartMode(PUartInfo,uiParaData))) {
#if defined(UART_SEMCONTROL)
			OSSemPost(PUartInfo->pUartSem);
#else
			OS_EXIT_CRITICAL();
#endif // end #if defined(UART_SEMCONTROL)
			return UART_NOK;
		}    
	                         
		puiAddrBase[__B_UART_FCR << uiOffBase] = ((__GuiUartFifoTab[uiId] << 6) | 0x07);       
	                                                                    /*  初始化FIFO為N個字節觸發,WO
	                                                                        發送和接收的FIFO都使能      */                                                                        
		puiAddrBase[__B_UART_IER << uiOffBase] = 0x05;                      /*  使能接收中斷,不使能發送中斷 */
	
		PUartInfo->uiUartFlag |= 0x10;                                      /*  4位置位表示發送隊列使能     */                       
#if defined(UART_SEMCONTROL)
		OSSemPost(PUartInfo->pUartSem);
	} // end of if ( PUartInfo->pUartSem!=0 )
#else
	OS_EXIT_CRITICAL();
#endif // end #if defined(UART_SEMCONTROL)
    
	return UART_OK;
}
/*********************************************************************************************************
** Function name:           uartInit
** Descriptions:            串口初始化及中斷設置
** input parameters:        uiId:       子設備號
**                          pcArg:      字符串指針
**                          pRsv:       保留參數
** Output parameters:       NONE
** Returned value:			OPERATE_SUCCESS:    操作成功
**                          OPERATE_FAIL:       操作失敗
** Example:                 char pUart[]="BaudRate=9600,DataBits=8,StopBits=1,Parity=NONE,RtsControl=NONE"; 
**                          uartInit(0,pUart,0); 
*********************************************************************************************************/
#define MAX_UART_STR_NUM   5                                            /*  字符串中包含5個參數         */

extern int32 uartInit (uint32 uiId,
                       char *pcArg,
                       void *pRsv)
{
 

 	
    uint32 uiParaData[MAX_UART_STR_NUM]={0};                            /*  定義一個數組存放字符串的參數*/
    
    char cCopyStr[80];                                                  /*  用于備份字符串              */

	
    if ((uiId<__UART_MAX_NUM) && (strlen(pcArg)<80)) {
        strcpy(cCopyStr,pcArg);										    /*  復制字符串                  */	
        
        __GpuiUartInfoTab[uiId]->puiAddrBase = (uint32 *)__GuiUartBaseAddrTab[uiId];
                                                                        /*  定基址                      */
                                                                        
        __GpuiUartInfoTab[uiId]->uiOffBase = 0;                         /*  地址偏移量                  */
        
        __GpuiUartInfoTab[uiId]->uiUartFlag = 0;                        /*  清0標志                     */
        
        __GpuiUartInfoTab[uiId]->uiQueueReviceFifoLen = __GuiQueueReviceFifoTab[uiId];                    
                                                                        /*  軟件FIFO接收長度            */
                                                                        
        __GpuiUartInfoTab[uiId]->uiQueueSendFifoLen = __GuiQueueSendFifoTab[uiId];                    
                                                                        /*  軟件FIFO發送長度            */
                                                                           
        __GpuiUartInfoTab[uiId]->PdqReviceBuf = (DataQueue *)GpuiUartReviceTab[uiId];   
                                                                        /*  記錄接收緩存                */
                                                                        
        __GpuiUartInfoTab[uiId]->PdqSendBuf = (DataQueue *)GpuiUartSendTab[uiId];		
                                                                        /*  記錄發送緩存                */
                                                                        
        __GpuiUartInfoTab[uiId]->uiUartId =  uiId;                      /*  記錄下自己的ID號            */
                                                                      
        ImpCmd(Tab_UART,cCopyStr,uiParaData);                           /*  從字符串中提取參數          */           
		 
        if (__uartInit(__GpuiUartInfoTab[uiId], uiParaData, 
                       __GuiQueueReviceFifoTab[uiId], __GuiQueueSendFifoTab[uiId]) == OPERATE_FAIL) {
            return(UART_NOK);
        }
        else {
            return(UART_OK);
        }                                                                                                                               
    }
    else {
        return(UART_NOK);
    } 
}

/*********************************************************************************************************
** Function name:           uartSetMode
** Descriptions:            設置串口的參數
** input parameters:        uiId      : 子設備號
**                          uiCmd     :設置參數宏:CTMODE--串口模式;BAUDRATE--串口波特率
**                          pcArg     :字符串指針
** Output parameters:       NONE
** Returned value:			OPERATE_SUCCESS:    操作成功
**                          OPERATE_FAIL:       操作失敗
** Example1:                char pUartBps[] = "BaudRate=9600";
**                          WdtSetMode( 0, BAUDRATE, pUartBps);  
** Example2:                char pUart[]="DataBits=8 StopBits=1 Parity=NONE RtsControl=NONE";
**                          WdtSetMode( 0, CTMODE, pUart);  
*********************************************************************************************************/
#define BAUDRATE    0   
#define CTMODE      1
extern int32 uartSetMode (uint32 uiId,
                          uint32 uiCmd,
                          char *pcArg)
{
    uint32 uiParaData[MAX_UART_STR_NUM]={0};                            /*  定義一個數組存放字符串的參數*/
    
    char cCopyStr[80];                                                  /*  用于備份字符串              */
	
    if ((uiId<__UART_MAX_NUM) && (strlen(pcArg)<80)) {
        strcpy(cCopyStr,pcArg);										    /*  復制字符串                  */	
        
		ImpCmd(Tab_UART,cCopyStr,uiParaData);                           /*  從字符串中提取參數          */ 
		
		switch(uiCmd) {

		case BAUDRATE:
			return(__uartBandRate(__GpuiUartInfoTab[uiId],uiParaData[BaudRate])); 
	        break;	
	    			
		case CTMODE:
			return(__uartMode(__GpuiUartInfoTab[uiId],uiParaData));					
            break;   
		default:
			break;	
		}
    }		
	return UART_NOK;     
}
/*********************************************************************************************************
** Function name:			__uartGetState
** Descriptions:			從底層串口寄存器獲取當前串口的參數
** input parameters:		uiId:               子設備號
**							uiParaData:         字符串指針
** Output parameters:       NONE
** Returned value:			OPERATE_SUCCESS:    操作成功
**                          OPERATE_FAIL:       操作失敗
*********************************************************************************************************/
int32 __uartGetState (uint32 uiId, uint32 *uiParaData)
{
    volatile uint32 *puiAddrBase;
	volatile uint32  uiOffBase;

	uint32 uiBak = 0;
	
	puiAddrBase = __GpuiUartInfoTab[uiId]->puiAddrBase;
	uiOffBase   = __GpuiUartInfoTab[uiId]->uiOffBase;
	
	uiBak = puiAddrBase[__B_UART_LCR << uiOffBase];
	puiAddrBase[__B_UART_LCR << uiOffBase] |= 0x80;                     /*  允許訪問分頻因子寄存器      */
		  
	uiParaData[BaudRate] = ((Fpclk /(puiAddrBase[__B_UART_DLL << uiOffBase]
	                       | (puiAddrBase[__B_UART_DLM << uiOffBase] << 8)) / 16));
	uiParaData[DataBits] = (uiBak & 0x03) + 5;
	uiParaData[StopBits] = ((uiBak >> 2) & 0x01) + 1;
	if (( (uiBak >> 3) & 0x01) == 0)
	    uiParaData[Parity] = 0;
	else
	{
	    uiParaData[Parity] = (((uiBak >> 4) & 0x03) + 1);   
	}
	
	puiAddrBase[__B_UART_LCR << uiOffBase] &= 0x7F;                     /*  禁止訪問分頻因子寄存器      */
	
	return UART_OK;
}
/*********************************************************************************************************
** Function name:           uartGetState
** Descriptions:            獲取當前串口的參數
** input parameters:        uiId:               子設備號
**                          pcArg:              字符串指針
** Output parameters:       pcArg:              輸出字符串參數
** Returned value:			OPERATE_SUCCESS:    操作成功
**                          OPERATE_FAIL:       操作失敗
*********************************************************************************************************/
extern int32 uartGetState (uint32 uiId, char * pcArg)
{
    uint32 uiParaData[MAX_UART_STR_NUM]={0};                           /*  定義一個數組存放字符串的參數 */
	if (uiId < __UART_MAX_NUM) {
	    __uartGetState(uiId, uiParaData);
	    ExpCmd(Tab_UART, pcArg, uiParaData);
	}
	else
		return UART_NOK;
	return UART_OK;
}
/*********************************************************************************************************
** Function name:			_uartQueueStatus
** Descriptions:			獲取Queue隊列的狀態
** input parameters:		PUartInfo      : 指向uart信息結構體的指針
**                          uiWhichFifo	  : 1-發送隊列;0-接收隊列
** Returned value:			發送隊列中可操作的空間大小,或接收隊列中可用數據個數
*********************************************************************************************************/
static int32 _uartQueueStatus (__PUART_INFO PUartInfo, uint32 uiWhichFifo)
{
#if defined(UART_SEMCONTROL)
	INT8U UartErr;
#endif // end #if defined(UART_SEMCONTROL)
#if defined(QUEUE_NEW_OPRT)
	uint16 uiCurNData = 0;
	
	uint16 uiMaxData;
  uint8 *pucIn, *pucOut;
#endif // end of #if defined(QUEUE_NEW_OPRT)

#if defined(QUEUE_NEW_OPRT)
#if defined(UART_SEMCONTROL)
	OSSemPend(PUartInfo->pUartSem, 0, &UartErr);
#else
	OS_ENTER_CRITICAL(); 
#endif // end #if defined(UART_SEMCONTROL)
	if ((uiWhichFifo == TX_FIFO) && ((PUartInfo->uiUartFlag) < 0x80))
	{
		pucIn = PUartInfo->PdqSendBuf->In;
		pucOut = PUartInfo->PdqSendBuf->Out;
		uiMaxData = PUartInfo->PdqSendBuf->MaxData;
		
		if ( pucIn > PUartInfo->PdqSendBuf->Out ) {
			uiCurNData = uiMaxData - (pucIn - pucOut);
		} else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久一日本道色综合| 欧美日韩一卡二卡三卡| 国产亚洲综合性久久久影院| 激情综合网最新| 久久久久久**毛片大全| 国产精品亚洲一区二区三区在线 | 午夜精品久久久久| 欧美日韩电影在线| 蜜臂av日日欢夜夜爽一区| 精品国产一区二区三区av性色| 久久99久久精品欧美| 国产精品无人区| 色狠狠综合天天综合综合| 亚洲国产裸拍裸体视频在线观看乱了| 欧美日韩在线精品一区二区三区激情 | 久久国产人妖系列| 精品国产乱子伦一区| 福利一区二区在线| 亚洲另类色综合网站| 日韩一区二区麻豆国产| 国产很黄免费观看久久| 一区二区三区四区激情| 欧美精品丝袜中出| 国产69精品久久777的优势| 亚洲精品成人a在线观看| 日韩视频免费观看高清完整版| 久久国产生活片100| 亚洲婷婷综合久久一本伊一区 | 欧美乱熟臀69xxxxxx| 久久国产福利国产秒拍| 一区免费观看视频| 欧美高清视频一二三区 | 成人国产亚洲欧美成人综合网| 玉米视频成人免费看| 日韩色在线观看| 99视频精品全部免费在线| 日韩在线a电影| 国产精品久久久久四虎| 91精品国产麻豆| 91麻豆成人久久精品二区三区| 肉肉av福利一精品导航| 综合婷婷亚洲小说| 精品成人免费观看| 欧美图片一区二区三区| 国产成人亚洲综合a∨婷婷| 亚洲电影一区二区三区| 国产精品三级久久久久三级| 日韩一区二区三区高清免费看看| aaa欧美色吧激情视频| 蜜臀久久久99精品久久久久久| 自拍偷拍国产精品| 久久嫩草精品久久久精品| 欧美妇女性影城| 欧美在线影院一区二区| 99免费精品在线观看| 国产在线精品一区二区不卡了 | 在线观看日韩一区| 成人午夜视频福利| 国产麻豆视频精品| 久久er精品视频| 奇米色一区二区| 亚洲国产一区二区视频| 中文乱码免费一区二区| 精品国产123| 欧美tickling挠脚心丨vk| 欧美肥大bbwbbw高潮| 欧洲精品一区二区三区在线观看| 国产伦精一区二区三区| 久久国产麻豆精品| 日本亚洲最大的色成网站www| 亚洲永久免费av| 亚洲一本大道在线| 悠悠色在线精品| 亚洲激情在线播放| 一区二区三区在线观看动漫| 自拍偷拍欧美精品| 一区二区三区视频在线观看| 亚洲视频一区二区在线| 亚洲欧洲美洲综合色网| 亚洲图片欧美激情| 亚洲卡通动漫在线| 亚洲最新视频在线观看| 一区二区三区精密机械公司| 一区免费观看视频| 一区二区在线观看免费视频播放| 国产精品污网站| 亚洲同性gay激情无套| 一区二区三区在线视频免费观看 | 欧美日韩一区二区三区在线| 在线观看欧美日本| 欧美人狂配大交3d怪物一区| 欧美群妇大交群的观看方式| 欧美一区二区不卡视频| 日韩免费一区二区三区在线播放| 欧美大片日本大片免费观看| 久久久噜噜噜久噜久久综合| 欧美激情一区二区三区蜜桃视频| 国产精品久久久久久久久免费相片 | 亚洲免费观看高清完整版在线| 亚洲精品免费在线| 三级精品在线观看| 国产乱一区二区| 99国产一区二区三精品乱码| 欧美性猛片xxxx免费看久爱| 欧美v亚洲v综合ⅴ国产v| 国产亚洲一区字幕| 亚洲欧美日韩一区二区| 日韩成人午夜电影| 极品少妇xxxx偷拍精品少妇| 99久久久无码国产精品| 欧美日韩另类国产亚洲欧美一级| 日韩一区二区精品葵司在线| 中文一区二区完整视频在线观看 | 中文一区二区完整视频在线观看 | 制服丝袜中文字幕亚洲| 久久综合一区二区| 亚洲免费伊人电影| 久久精品国产一区二区三| 99re这里只有精品6| 91精品中文字幕一区二区三区| 精品嫩草影院久久| 亚洲视频1区2区| 青青草成人在线观看| 不卡在线视频中文字幕| 91精品国产综合久久精品图片 | 亚洲精品国产精品乱码不99| 久久精品久久精品| 91免费视频大全| 久久众筹精品私拍模特| 亚洲一区在线看| 国产成人免费xxxxxxxx| 91精品国产综合久久婷婷香蕉| 国产精品乱码人人做人人爱| 奇米影视一区二区三区小说| 色呦呦国产精品| 欧美精品一区二区在线播放 | 日韩欧美你懂的| 樱花影视一区二区| 成人国产精品免费观看动漫| 91麻豆精品国产无毒不卡在线观看| 成人欧美一区二区三区| 激情综合色播五月| 欧美日韩国产一二三| 国产精品对白交换视频| 国精产品一区一区三区mba桃花 | 国产另类ts人妖一区二区| 欧美日韩国产首页在线观看| 国产精品久久毛片| 国产精品一区二区三区四区| 欧美日高清视频| 亚洲一区二区高清| 91麻豆精品在线观看| 日本一区二区在线不卡| 狠狠色丁香婷婷综合久久片| 911精品国产一区二区在线| 亚洲裸体xxx| 成人av在线资源网| 中文av一区特黄| 成人h精品动漫一区二区三区| 日韩精品一区二区在线| 日韩精品高清不卡| 欧美日韩色一区| 亚洲成a人v欧美综合天堂| 欧美专区在线观看一区| 亚洲精选视频免费看| 91在线porny国产在线看| 国产精品午夜在线| 成人开心网精品视频| 国产精品久久久久婷婷| 不卡视频在线看| 自拍视频在线观看一区二区| 91丨porny丨首页| 亚洲美女视频在线| 欧美日韩在线播放一区| 天堂成人免费av电影一区| 欧美另类变人与禽xxxxx| 丝袜脚交一区二区| 日韩欧美电影在线| 国产综合久久久久影院| 欧美韩国日本综合| 99久久婷婷国产| 一区二区三区资源| 91麻豆精品国产91久久久更新时间| 日韩成人免费看| 精品国产露脸精彩对白 | 色婷婷av一区二区三区软件| 亚洲综合成人网| 欧美一级高清片| 国产一区二区三区不卡在线观看 | 亚洲一二三四区| 91麻豆精品国产91| 国产乱码精品一区二区三区忘忧草| 国产欧美日韩精品在线| 91论坛在线播放| 日韩中文字幕区一区有砖一区 | 欧美专区亚洲专区| 蜜桃视频在线观看一区| 亚洲国产精品av| 欧美视频自拍偷拍| 精品在线一区二区三区|