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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uart.c

?? 三星 s3c6400測試代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:

//////////
// Function Name : UART_SendBreak
// Function Description : This function makes SendBreak signal on selected channel
// Input : Channe [0~3]
// Output : NONE
// Version : v0.1
void UART_SendBreak(u32 cCh)
{
	
	u32 uTemp;
	volatile UART_REGS *pUartRegs;

	pUartRegs = (volatile UART_REGS *)(UART_BASE+UART_OFFSET*cCh);


	uTemp = Inp32(&pUartRegs->rUCon);
	uTemp |= (1<<4);						// Send Break signal
	Outp32(&pUartRegs->rUCon,uTemp);
		
}

//////////
// Function Name : UART_EnModemINT
// Function Description : This function choose Modem Interrupt enable/disable
// Input :   cCh [ Uart channel ],    uEn [ 0 : disable     1 : enable]
// Output : NONE
// Version : v0.1
void UART_EnModemINT(u32 cCh,u32 uEn)
{
	u32 uTempReg;
	
	volatile UART_REGS *pUartRegs;

	pUartRegs = (volatile UART_REGS *)(UART_BASE+UART_OFFSET*cCh);

	uTempReg = Inp32(&pUartRegs->rUmCon);
	uTempReg &= ~(1<<3);
	uTempReg |=(uEn<<3);
	Outp32(&pUartRegs->rUmCon,uTempReg);
}


//////////
// Function Name : UART_Open
// Function Description : This function set up H/W(GPIO) and initialize SFR of UART for Debugging
// Input : ch [0~4 UART channel]
// Output : g_pUartRxStr[ch] [charater type received string]
// Version : v0.1

u8 UART_Open(u8 ch) // setting H/W & initializing regiter
{


	if(ch == 0)
		g_pUartDebugRegs = UART0_BASE;
	else if(ch == 1)
		g_pUartDebugRegs = UART1_BASE;
	else if(ch == 2)
		g_pUartDebugRegs = UART2_BASE;
	else if(ch == 3)
		g_pUartDebugRegs = UART3_BASE;	


	switch(ch)
	{
		case 0 :
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_0, 2); //Uart0 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_1, 2); //Uart0 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_2, 2); //Uart0 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_3, 2); //Uart0 RTSn			
			
			if(UART_InitializeREG(UART0_BASE, &g_AUartCon[0])  == SENDBREAK)
				return SENDBREAK; // Initialize register set for Uart 0

			break;
		case 1 :
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 2); //Uart1 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 2); //Uart1 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_6, 2); //Uart1 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_7, 2); //Uart1 RTSn		

			if(UART_InitializeREG(UART1_BASE, &g_AUartCon[1]) == SENDBREAK)
				return SENDBREAK;

			break;
		case 2 :
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_0, 2); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_1, 2); //Uart2 TXD			

			if(UART_InitializeREG(UART2_BASE, &g_AUartCon[2]) == SENDBREAK)
				return SENDBREAK;

			break;
		case 3 :
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_2, 2); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_3, 2); //Uart2 TXD			

			if(UART_InitializeREG(UART3_BASE, &g_AUartCon[3]) == SENDBREAK)
				return SENDBREAK;

			break;
		default :
			return FALSE;
	}
	return TRUE;
}

//////////
// Function Name : UART_Open2
// Function Description : This function set up H/W(GPIO) and initialize SFR of UART for Testing
// Input : ch [0~4 UART channel]
// Output : g_pUartRxStr[ch] [charater type received string]
// Version : v0.1

u8 UART_Open2(u8 ch) // setting H/W & initializing regiter
{

	INTC_SetVectAddr(NUM_DMA0,Isr_Dma);
	if(ch == 0)
	{
		INTC_SetVectAddr(NUM_UART0,Isr_Uart0);
//		INTC_Enable(NUM_UART0);
	}
	else if(ch == 1)
	{
		INTC_SetVectAddr(NUM_UART1,Isr_Uart1);
//		INTC_Enable(NUM_UART1);
	}
	else if(ch == 2)
	{
		INTC_SetVectAddr(NUM_UART2,Isr_Uart2);
//		INTC_Enable(NUM_UART2);
	}
	else if(ch == 3)
	{
		INTC_SetVectAddr(NUM_UART3,Isr_Uart3);
//		INTC_Enable(NUM_UART3);
	}
	else
		return 0;

	switch(ch)
	{
		case 0 :
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_0, 2); //Uart0 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_1, 2); //Uart0 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_2, 2); //Uart0 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_3, 2); //Uart0 RTSn			
			
			if(UART_InitializeREG(UART0_BASE, &g_AUartCon[0])  == SENDBREAK)
				return SENDBREAK; // Initialize register set for Uart 0

			break;
		case 1 :
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 2); //Uart1 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 2); //Uart1 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_6, 2); //Uart1 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_7, 2); //Uart1 RTSn		

			if(UART_InitializeREG(UART1_BASE, &g_AUartCon[1]) == SENDBREAK)
				return SENDBREAK;

			break;
		case 2 :
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_0, 2); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_1, 2); //Uart2 TXD			

			if(UART_InitializeREG(UART2_BASE, &g_AUartCon[2]) == SENDBREAK)
				return SENDBREAK;

			break;
		case 3 :
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_2, 2); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_3, 2); //Uart2 TXD			

			if(UART_InitializeREG(UART3_BASE, &g_AUartCon[3]) == SENDBREAK)
				return SENDBREAK;

			break;
		default :
			return FALSE;
	}
	return TRUE;
}


//////////
// Function Name : UART_OpenModem
// Function Description : This function enable Modem Interrupt on VIC
// Input : ch [0~4 UART channel]
// Output : NONE
// Version : v0.1
void UART_OpenModem(u8 ch) 
{
	volatile UART_REGS *pUartRegs;
	u32 uTemp2;
	

	pUartRegs = (volatile UART_REGS *)(UART_BASE+UART_OFFSET*ch);
	
	while (Inp32(&pUartRegs->rUfStat )& 0x3f) 	//until rx fifo count 0 (fifo clear)
	{
	(u8)(Inp32(&pUartRegs->rUrxh));
	}	

		
		Outp32(&pUartRegs->rUintSp , (BIT_UART_MODEM|BIT_UART_TXD|BIT_UART_ERROR|BIT_UART_RXD));
		Outp32(&pUartRegs->rUintP , (BIT_UART_MODEM|BIT_UART_TXD|BIT_UART_ERROR|BIT_UART_RXD));

		uTemp2 = Inp32(&pUartRegs->rUintM);
		uTemp2 &= ~(BIT_UART_MODEM);	
		Outp32(&pUartRegs->rUintM,uTemp2);

		INTC_Enable(NUM_UART0);
		INTC_Enable(NUM_UART1);
		INTC_Enable(NUM_UART2);
		INTC_Enable(NUM_UART3);


}



//////////
// Function Name : UART_Close
// Function Description : This function closed H/W(GPIO) and disable UART exception
// Input : ch [0~4 UART channel]
// Output : 1: success 2:fail
// Version : v0.1

u8 UART_Close(u8 ch)  // return to reset value
{
	volatile UART_REGS *pUartRegs;

	if (ch > 3) return FALSE;
	pUartRegs = (volatile UART_REGS *)(UART_BASE+UART_OFFSET*ch);


	INTC_Disable(NUM_DMA0);
	
	pUartRegs->rUintM |= (BIT_UART_MODEM|BIT_UART_TXD|BIT_UART_ERROR|BIT_UART_RXD);
	
	switch(ch)
	{
		case 0 :
			INTC_Disable(NUM_UART0);
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 0); //Uart1 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 0); //Uart1 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_6, 0); //Uart1 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_7, 0); //Uart1 RTSn		
	
			break;
		case 1 :
			INTC_Disable(NUM_UART1);
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 0); //Uart1 RXD
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 0); //Uart1 TXD			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_6, 0); //Uart1 CTSn			
			GPIO_SetFunctionEach(eGPIO_A, eGPIO_7, 0); //Uart1 RTSn		
			break;
		case 2 :
			INTC_Disable(NUM_UART2);
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_0, 0); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_1, 0); //Uart2 TXD	
			break;
		case 3 :
			INTC_Disable(NUM_UART3);
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_2, 0); //Uart2 RXD
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_3, 0); //Uart2 TXD		
			break;
		default :
			printf("Can't close UARTx!! Select 0,1, or 2!!");
			return FALSE;
	}
	return TRUE;
}


//////////
// Function Name : UART_InitializeREG
// Function Description : This function set up SFR by pre-defined value 
// Input : *pUartRegs [SFR value base address]
//		 *pUartCon [Pre-defined value's base address, UART_Config]
// Output : SENDBREAK [when sendbreak signal set up]
//		    0 [nomal mode (sendbreak signal disable)]
// Version : v0.1

u32 UART_InitializeREG( UART_REGS *pUartRegs, UART_CON *pUartCon) // Initialize register set with current control set
{

	
	UART_CalcBaudrate(pUartRegs, pUartCon);

	Outp32(&pUartRegs->rUfCon , (pUartCon->cTxTrig<<6)|(pUartCon->cRxTrig<<4)|TX_FIFO_RESET|RX_FIFO_RESET
						|(pUartCon->cEnableFifo));
	
	Outp32(&pUartRegs->rUlCon , (pUartCon->cSelUartIrda<<6)|(pUartCon->cParityBit<<3)|(pUartCon->cStopBit<<2)
						|(pUartCon->cDataBit));
	Outp32(&pUartRegs->rUCon , (pUartCon->cOpClock<<10)|TX_INT_TYPE|RX_INT_TYPE|RX_ERR_INT_EN|RX_TIMEOUT_EN
						|(pUartCon->cLoopTest<<5)| (pUartCon->cSendBreakSignal<<4) |(pUartCon->cTxMode<<2)|(pUartCon->cRxMode));		
	if(pUartCon->cSendBreakSignal)
		return SENDBREAK;
//	Outp32(&pUartRegs->rUfCon , (pUartCon->cTxTrig<<6)|(pUartCon->cRxTrig<<4)|TX_FIFO_RESET|RX_FIFO_RESET
//						|(pUartCon->cEnableFifo));
	Outp32(&pUartRegs->rUmCon , (pUartCon->cRtsTrig<<5)|(pUartCon->cAfc<<4)|RTS_ACTIVE);	
	Outp32(&pUartRegs->rUintM , 0xf); // mask
	Outp32(&pUartRegs->rUintSp , 0xf); // source pending clear
	Outp32(&pUartRegs->rUintP , 0xf); // pending clear

	return 0;
	
}


//////////
// Function Name : UART_CalcBaudrate
// Function Description : This function defines UbrDiv and UdivSlot value depends on OpClock src
// Input : *pUartRegs [SFR value base address]
//		 *pUartCon [Pre-defined value's base address, UART_Config]
// Output : NONE
// Version : v0.1

void UART_CalcBaudrate( UART_REGS *pUartRegs, UART_CON *pUartCon)
{
	const u32 aSlotTable[16] = {0x0000, 0x0080, 0x0808, 0x0888, 0x2222, 0x4924, 0x4a52, 0x54aa,
				     		0x5555, 0xd555, 0xd5d5, 0xddd5, 0xdddd, 0xdfdd, 0xdfdf, 0xffdf};
	float tempDiv;
	u32 nOpClock;
	u32 nSlot;
	
	switch(pUartCon->cOpClock)
	{
		case 1 : 			
			nOpClock = g_uOpClock;
			break;// Uextclk
		case 3 :
			nOpClock = g_uOpClock;			
			break;// Epll
		case 0 :
		case 2 : // Pclk
		default : 			
			nOpClock = g_PCLK;			
			break;
	}

	tempDiv = (nOpClock/(16.*pUartCon->uBaudrate)) - 1;
	nSlot = (u32)((tempDiv - (int)tempDiv) * 16);
	Outp32(&pUartRegs->rUbrDiv , (u32)(tempDiv));
	Outp32(&pUartRegs->rUdivSlot , aSlotTable[nSlot]);	
	//printf(" div = %d, slot = 0x%x\n", (u32)(tempDiv), aSlotTable[nSlot]); 
	
}


//////////
// Function Name : Isr_Uart0~3
// Function Description : These are Interrupt Service Routine of UART which are connected to Isr_UartSub
// Input : NONE
// Output : NONE
// Version : v0.1

void __irq Isr_Uart0(void)
{		
	
	Isr_UartSub(0);	
	INTC_ClearVectAddr();
}		

void __irq Isr_Uart1(void)
{	
	Isr_UartSub(1);
	INTC_ClearVectAddr();
}

void __irq Isr_Uart2(void)
{	
	Isr_UartSub(2);
	INTC_ClearVectAddr();
}

void __irq Isr_Uart3(void)
{	
	Isr_UartSub(3);
	INTC_ClearVectAddr();	
}	


//////////
// Function Name : Isr_UartSub
// Function Description : This is Uart SubISR which checks errors and operates Tx and Rx
// Input : NONE
// Output : NONE
// Version : v0.1

void Isr_UartSub(u8 ch)
{
	u32 ErrorStatus = 0;	
	volatile UART_REGS *pUartRegs;			
	u8 tempChar;
	u32 uTemp;

	pUartRegs = ( UART_REGS *)(UART_BASE+UART_OFFSET*ch);

	
	// Check Errors 	
	if (Inp32(&pUartRegs->rUintP) & BIT_UART_ERROR)
	{
		printf("Error occured!!\n");
		uTemp = Inp32(&pUartRegs->rUintM);
		uTemp |= BIT_UART_ERROR;
		Outp32(&pUartRegs->rUintM , uTemp);
		pUartRegs->rUintM |= BIT_UART_ERROR;
//		Outp32(&pUartRegs->rUintSp , BIT_UART_ERROR|BIT_UART_RXD);
//		Outp32(&pUartRegs->rUintP , BIT_UART_ERROR|BIT_UART_RXD);
		Outp32(&pUartRegs->rUintSp , BIT_UART_ERROR);
		Outp32(&pUartRegs->rUintP , BIT_UART_ERROR);
		ErrorStatus = Inp32(&pUartRegs->rUerStat);

		switch(ErrorStatus)//to clear and check the status of register bits
		{
			case 1:
				printf("%d ch : Overrun error!\n",ch);
				break;
			case 2:
				printf("%d ch : Parity error!\n",ch);
				break;
			case 4:
				printf("%d ch : Frame error!\n",ch);
				break;
			case 6:
				printf("%d ch : Parity, Frame error!\n",ch);
				break;
			case 8:
				printf("%d ch : Breake detect\n",ch);
				break;
			case 0xa:
				printf("%d ch : Parity error & Break detect!\n",ch);
				break;
			case 0xc:
				printf("%d ch : Frame error & Breake detect\n",ch);
				break;
			case 0xe:
				printf("%d ch : Parity, Frame error & Break detect!\n",ch);
				break;
			default :
				printf("Unknown error : 0x%x\n", ErrorStatus);
				break;
		}
		
		g_AisRxDone[ch] = 1;	

		uTemp = Inp32(pUartRegs->rUintM );
		uTemp &= ~(BIT_UART_ERROR);
		Outp32(&pUartRegs->rUintM ,uTemp);
		pUartRegs->rUintM &= ~(BIT_UART_ERROR);
		
	}


	// Tx ISR	
	if (Inp32(&pUartRegs->rUintP )& BIT_UART_TXD)
	{
		uTemp = Inp32(&pUartRegs->rUintM);
		uTemp |= BIT_UART_TXD;
		Outp32(&pUartRegs->rUintM , uTemp);
//		pUartRegs->rUintM |= BIT_UART_TXD;
		Outp32(&pUartRegs->rUintSp , BIT_UART_TXD);
		Outp32(&pUartRegs->rUintP , BIT_UART_TXD);

		if (Inp32(&pUartRegs->rUfCon )& 1) // 1 : fifo enable 
		{
			// for debugging fifo 
			*g_pFifoDebug++ = ++g_uFcnt;
			*g_pFifoDebug++ = (Inp32(&pUartRegs->rUfCon)>>6)&3;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
有码一区二区三区| 成人精品视频网站| 国产老妇另类xxxxx| 99精品在线观看视频| 91精品免费观看| 亚洲精品菠萝久久久久久久| 国产盗摄视频一区二区三区| 欧美丰满少妇xxxbbb| 国产精品网站导航| 国产在线视频一区二区| 欧美日韩国产片| 亚洲影院免费观看| 99精品国产视频| 国产精品理论在线观看| 精品一区二区三区在线观看国产| 欧美日韩精品高清| 亚洲免费观看高清完整版在线| 成人涩涩免费视频| 久久日韩精品一区二区五区| 免费在线欧美视频| 欧美精品v国产精品v日韩精品 | 视频在线观看国产精品| 97se亚洲国产综合自在线观| 国产精品丝袜一区| 国内精品国产成人国产三级粉色| 日韩一区二区视频| 日本系列欧美系列| 3atv在线一区二区三区| 五月综合激情日本mⅴ| 欧美日韩中文字幕精品| 亚洲另类色综合网站| 91网上在线视频| 亚洲人成精品久久久久久| 99视频在线精品| 亚洲伦理在线精品| 91一区一区三区| 亚洲美女在线一区| 欧美日韩中文字幕一区二区| 亚洲国产美国国产综合一区二区| 欧美日韩精品一区二区三区四区 | 欧美在线一二三四区| 亚洲欧美日韩国产成人精品影院| 91亚洲国产成人精品一区二三| 国产精品对白交换视频| 色偷偷一区二区三区| 亚洲成a天堂v人片| 欧洲国内综合视频| 三级久久三级久久久| 337p亚洲精品色噜噜狠狠| 国产亚洲精品aa| 成人短视频下载| 一区二区日韩av| 欧美高清视频一二三区| 免费不卡在线视频| 久久久天堂av| 日本久久电影网| 舔着乳尖日韩一区| 久久影院电视剧免费观看| 国产成人精品亚洲午夜麻豆| 亚洲精品视频在线| 日韩午夜电影在线观看| 成人午夜又粗又硬又大| 一区二区日韩av| 久久亚洲精品小早川怜子| 成人污污视频在线观看| 午夜一区二区三区在线观看| 欧美精品一区二区蜜臀亚洲| av在线不卡电影| 蜜臀av性久久久久av蜜臀妖精| 国产日韩欧美亚洲| 欧美午夜精品免费| 久久国产精品第一页| 亚洲人亚洲人成电影网站色| 欧美一级xxx| 91免费看片在线观看| 美国毛片一区二区三区| 综合激情成人伊人| 欧美不卡在线视频| 色天天综合久久久久综合片| 免费观看一级欧美片| 亚洲欧美在线高清| 亚洲精品一区二区三区99| 欧美亚男人的天堂| 风流少妇一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品日韩一| 国产亚洲女人久久久久毛片| 欧美肥胖老妇做爰| 一本一道久久a久久精品| 精品一区二区av| 日韩精品一区第一页| 一个色妞综合视频在线观看| 久久夜色精品国产欧美乱极品| 欧美亚洲综合在线| 99久久国产综合精品女不卡| 老司机免费视频一区二区| 夜夜揉揉日日人人青青一国产精品| 久久久另类综合| 日韩精品一区二区三区在线播放| 欧美性做爰猛烈叫床潮| 99久久久久免费精品国产 | 精品国产乱码久久久久久久久 | 欧美极品美女视频| 精品国产乱码久久久久久闺蜜| 欧美三级在线视频| 91福利在线播放| 欧美亚洲动漫精品| 日本福利一区二区| 91麻豆福利精品推荐| 99久久精品国产网站| av成人老司机| 91网上在线视频| 99久久久久免费精品国产 | 日韩视频不卡中文| 欧美剧在线免费观看网站| 欧美日韩亚洲丝袜制服| 欧美伊人久久久久久久久影院| 欧美午夜精品理论片a级按摩| 欧美三级中文字| 51精品秘密在线观看| 日韩西西人体444www| 欧美电影免费观看高清完整版在线 | 国产+成+人+亚洲欧洲自线| 国产精品资源网站| 成人性生交大片免费| 一本在线高清不卡dvd| 欧美视频一区在线| 欧美丰满少妇xxxbbb| 亚洲精品一区二区三区精华液| 久久蜜臀中文字幕| 国产精品久久久久久久久久久免费看 | 一区二区三区四区蜜桃| 中文字幕日韩一区| 亚洲一本大道在线| 日本中文字幕一区| 国产精品自拍三区| 99国产精品视频免费观看| 欧美亚日韩国产aⅴ精品中极品| 欧美精品久久天天躁| wwww国产精品欧美| 亚洲三级免费观看| 美日韩黄色大片| gogo大胆日本视频一区| 欧美图片一区二区三区| 亚洲精品一区二区三区蜜桃下载 | 日韩欧美一区二区三区在线| 欧美精品一区二区不卡 | 美脚の诱脚舐め脚责91| 波多野结衣在线aⅴ中文字幕不卡| 欧日韩精品视频| xf在线a精品一区二区视频网站| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲最新视频在线观看| 狠狠色丁香婷综合久久| 色成年激情久久综合| www激情久久| 天堂在线亚洲视频| 成人激情小说网站| 欧美电影免费观看高清完整版在线观看 | 一区二区三国产精华液| 韩国精品一区二区| 在线视频中文字幕一区二区| 久久婷婷国产综合精品青草| 一区二区三区四区在线免费观看| 极品少妇xxxx精品少妇| 99久久精品国产导航| 精品国产乱码久久久久久老虎| 亚洲综合免费观看高清在线观看| 国产成人午夜精品影院观看视频| 精品视频1区2区| 日韩美女精品在线| 成人影视亚洲图片在线| 日韩一区二区三区av| 亚洲18色成人| 色一区在线观看| 国产精品国产三级国产普通话蜜臀 | 国产成人午夜电影网| 欧美一级免费观看| 亚洲成人激情综合网| 91麻豆成人久久精品二区三区| 国产女人水真多18毛片18精品视频| 青青青伊人色综合久久| 欧美亚洲国产一区二区三区va | 久久久99精品免费观看| 毛片一区二区三区| 欧美日韩免费一区二区三区| 亚洲激情校园春色| 99re视频精品| 国产精品久久久久久久久果冻传媒 | 色综合久久精品| 国产精品毛片久久久久久| 国产成人自拍在线| 久久久久久久国产精品影院| 精品制服美女丁香| 日韩精品中文字幕在线一区| 日韩成人精品在线观看| 日韩午夜激情视频| 免费观看日韩电影| 亚洲精品一区二区精华| 国产九九视频一区二区三区|