久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4109|回復: 0
打印 上一主題 下一主題
收起左側

STM32單片機+串口擴展芯片WK2124驅動程序范例

[復制鏈接]
跳轉到指定樓層
樓主
ID:241682 發(fā)表于 2022-9-14 13:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#ifndef __wk2xxx_H
#define __wk2xxx_H

#include "stm32f10x.h"
#include "misc.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_usart.h"


//定義函數

#define TPT_UART3_Enable()  USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
#define TPT_UART3_Disable() USART_ITConfig(USART3,USART_IT_RXNE,DISABLE);  


#define         WK2XXX_GENA     0X00
#define         WK2XXX_GRST     0X01
#define                WK2XXX_GMUT     0X02
#define         WK2XXX_GIER     0X10
#define         WK2XXX_GIFR     0X11
#define         WK2XXX_GPDIR    0X21
#define         WK2XXX_GPDAT    0X31
#define         WK2XXX_GPORT    1//        /wkxxxx  Global rigister of PORT
//wkxxxx  slave uarts  rigister address defines

#define         WK2XXX_SPAGE    0X03
//PAGE0
#define         WK2XXX_SCR      0X04
#define         WK2XXX_LCR      0X05
#define         WK2XXX_FCR      0X06
#define         WK2XXX_SIER     0X07
#define         WK2XXX_SIFR     0X08
#define         WK2XXX_TFCNT    0X09
#define         WK2XXX_RFCNT    0X0A
#define         WK2XXX_FSR      0X0B
#define         WK2XXX_LSR      0X0C
#define         WK2XXX_FDAT     0X0D
#define         WK2XXX_FWCR     0X0E
#define         WK2XXX_RS485    0X0F
//PAGE1
#define         WK2XXX_BAUD1    0X04
#define         WK2XXX_BAUD0    0X05
#define         WK2XXX_PRES     0X06
#define         WK2XXX_RFTL     0X07
#define         WK2XXX_TFTL     0X08
#define         WK2XXX_FWTH     0X09
#define         WK2XXX_FWTL     0X0A
#define         WK2XXX_XON1     0X0B
#define         WK2XXX_XOFF1    0X0C
#define         WK2XXX_SADR     0X0D
#define         WK2XXX_SAEN     0X0E
#define         WK2XXX_RTSDLY   0X0F

//WK串口擴展芯片的寄存器的位定義
//wkxxx register bit defines
// GENA
#define         WK2XXX_UT4EN        0x08
#define         WK2XXX_UT3EN        0x04
#define         WK2XXX_UT2EN        0x02
#define         WK2XXX_UT1EN        0x01
//GRST
#define         WK2XXX_UT4SLEEP        0x80
#define         WK2XXX_UT3SLEEP        0x40
#define         WK2XXX_UT2SLEEP        0x20
#define         WK2XXX_UT1SLEEP        0x10
#define         WK2XXX_UT4RST        0x08
#define         WK2XXX_UT3RST        0x04
#define         WK2XXX_UT2RST        0x02
#define         WK2XXX_UT1RST        0x01
//GIER
#define         WK2XXX_UT4IE        0x08
#define         WK2XXX_UT3IE        0x04
#define         WK2XXX_UT2IE        0x02
#define         WK2XXX_UT1IE        0x01
//GIFR
#define         WK2XXX_UT4INT        0x08
#define         WK2XXX_UT3INT        0x04
#define         WK2XXX_UT2INT        0x02
#define         WK2XXX_UT1INT        0x01
//SPAGE
#define         WK2XXX_SPAGE0          0x00
#define         WK2XXX_SPAGE1   0x01
//SCR
#define         WK2XXX_SLEEPEN        0x04
#define         WK2XXX_TXEN     0x02
#define         WK2XXX_RXEN     0x01
//LCR
#define         WK2XXX_BREAK          0x20
#define         WK2XXX_IREN     0x10
#define         WK2XXX_PAEN     0x08
#define         WK2XXX_PAM1     0x04
#define         WK2XXX_PAM0     0x02
#define         WK2XXX_STPL     0x01
//FCR
//SIER
#define         WK2XXX_FERR_IEN      0x80
#define         WK2XXX_CTS_IEN       0x40
#define         WK2XXX_RTS_IEN       0x20
#define         WK2XXX_XOFF_IEN      0x10
#define         WK2XXX_TFEMPTY_IEN   0x08
#define         WK2XXX_TFTRIG_IEN    0x04
#define         WK2XXX_RXOUT_IEN     0x02
#define         WK2XXX_RFTRIG_IEN    0x01
//SIFR
#define         WK2XXX_FERR_INT      0x80
#define         WK2XXX_CTS_INT       0x40
#define         WK2XXX_RTS_INT       0x20
#define         WK2XXX_XOFF_INT      0x10
#define         WK2XXX_TFEMPTY_INT   0x08
#define         WK2XXX_TFTRIG_INT    0x04
#define         WK2XXX_RXOVT_INT     0x02
#define         WK2XXX_RFTRIG_INT    0x01


//TFCNT
//RFCNT
//FSR
#define         WK2XXX_RFOE     0x80
#define         WK2XXX_RFBI     0x40
#define         WK2XXX_RFFE     0x20
#define         WK2XXX_RFPE     0x10
#define         WK2XXX_RDAT     0x08
#define         WK2XXX_TDAT     0x04
#define         WK2XXX_TFULL    0x02
#define         WK2XXX_TBUSY    0x01
//LSR
#define         WK2XXX_OE       0x08
#define         WK2XXX_BI       0x04
#define         WK2XXX_FE       0x02
#define         WK2XXX_PE       0x01
//FWCR
//RS485

/////函數部分
void WK_RstInit(void);
void WkWriteGReg(unsigned char greg,unsigned char dat);
u8 WkReadGReg(unsigned char greg);
void WkWriteSReg(u8 port,u8 sreg,u8 dat);
u8 WkReadSReg(u8 port,u8 sreg);
void WkWriteSFifo(u8 port,u8 *dat,u8 num);
void WkReadSFifo(u8 port,u8 *rec,u8 num);
void Wk_BaudAdaptive(void);
void Wk_Init(u8 port);
void Wk_DeInit(u8 port);
uint8_t Wk_SetBaud(u8 port,uint32_t baudrate);
int wk_TxLen(u8 port);
void wk_TxChars(u8 port,int len,u8 *sendbuf);
int wk_RxChars(u8 port,u8 *recbuf);
#endif
/////////////////
#include "wk2xxx.h"
#include "delay.h"
#include "usart.h"


/**************************************Wk2114WriteReg***********************************/
//函數功能:寫寄存器函數(前提是該寄存器可寫,某些寄存器如果你寫1,可能會自動置1,具體見數據手冊)
//參數:port:為子串口的數(C0C1)
//      reg:為寄存器的地址(A3A2A1A0)
//      dat:為寫入寄存器的數據
//注意:在子串口被打通的情況下,向FDAT寫入的數據會通過TX引腳輸出
//*************************************************************************/
void Wk2114WriteReg(unsigned char port,unsigned char reg,unsigned char dat)
{         
         uart_sendByte(((port-1)<<4)+reg);        //寫指令,對于指令的構成見數據手冊
         uart_sendByte(dat);//寫數據
}


/*************************************Wk2114ReadReg************************************/
//函數功能:讀寄存器函數
//參數:port:為子串口的數(C0C1)
//      reg:為寄存器的地址(A3A2A1A0)
//      rec_data:為讀取到的寄存器值
//注意:在子串口被打通的情況下,讀FDAT,實際上就是讀取uart的rx接收的數據
/*************************************************************************/
unsigned char Wk2114ReadReg(unsigned char port,unsigned char reg)
{         
    unsigned char rec_data;
    uart_sendByte(0x40+((port-1)<<4)+reg); //寫指令,對于指令的構成見數據手冊
          rec_data=uart_recByte();         //接收返回的寄存器值                                                                        
          return rec_data;
}



/**************************************Wk2114writeFIFO***********************************/
//函數功能:寫FIFO函數(該函數寫入的數據會通過uart的TX發(fā)送出去)
//參數:port:為子串口的數(C0C1)
//      *dat:為寫入數據指針
//      num:為寫入數據的個數,不超過16個字節(jié)(N3N2N1N0)
/*************************************************************************/
//void Wk2114writeFIFO(unsigned char port,unsigned char *send_da,unsigned char num)
//{         
//         unsigned char i;
//         uart_sendByte(0x80+((port-1)<<4)+(num-1)); //寫指令,對于指令構成見數據手冊
//         for(i=0;i<num;i++)
//         {
//           uart_sendByte( *(send_da+i));//寫數據
//         }
//}

/***************************************Wk2114readFIFO**********************************/
//函數功能:讀FIFO函數(該函數讀取的數據是FIFO緩存中的數據,實際上是uart的rx接收的數據)
//參數:port:為子串口的數(C0C1)
//      *dat:為讀到數據指針
//      num:為讀出數據的個數,不超過16個字節(jié)(N3N2N1N0)
/*************************************************************************/
//unsigned char *Wk2114readFIFO(unsigned char port,unsigned char num)
//{
//                unsigned char n;
//                unsigned char dat[256];
//                uart_sendByte(0xc0+((port-1)<<4)+(num-1));
//                for(n=0;n<num;n++)
//                {        
//                                dat[n]=uart_recByte();        
//                }
//                return dat;
//}

/******************************Wk2114Init*******************************************/
//函數功能:本函數主要會初始化一些芯片基本寄存器;
/*********************************************************************************/
void Wk2114Init(unsigned char port)
{
    unsigned char gena,grst,gier,sier,scr;
        //使能子串口時鐘
    gena=Wk2114ReadReg(WK2XXX_GPORT,WK2XXX_GENA);
        switch (port)
    {
          case 1://使能子串口1的時鐘
              gena|=WK2XXX_UT1EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                  case 2://使能子串口2的時鐘
              gena|=WK2XXX_UT2EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                   case 3://使能子串口3的時鐘
              gena|=WK2XXX_UT3EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                   case 4://使能子串口4的時鐘
              gena|=WK2XXX_UT4EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
         }        
        //軟件復位子串口
        grst=Wk2114ReadReg(WK2XXX_GPORT,WK2XXX_GRST);
        switch (port)
    {
          case 1://軟件復位子串口1
              grst|=WK2XXX_UT1RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                  case 2://軟件復位子串口2
              grst|=WK2XXX_UT2RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                   case 3://軟件復位子串口3
              grst|=WK2XXX_UT3RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                   case 4://軟件復位子串口4
             grst|=WK2XXX_UT4RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
         }        
  //使能子串口中斷,包括子串口總中斷和子串口內部的接收中斷,和設置中斷觸點
        gier=Wk2114ReadReg(WK2XXX_GPORT,WK2XXX_GIER);
        switch (port)
    {
          case 1://軟件復位子串口1
              gier|=WK2XXX_UT1RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
              break;
                  case 2://軟件復位子串口2
              gier|=WK2XXX_UT2RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
              break;
                   case 3://軟件復位子串口3
              gier|=WK2XXX_UT3RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
              break;
                   case 4://軟件復位子串口4
              gier|=WK2XXX_UT4RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
              break;
         }         
         //使能子串口接收觸點中斷和超時中斷
         sier=Wk2114ReadReg(port,WK2XXX_SIER);
         sier |= WK2XXX_RFTRIG_IEN|WK2XXX_RXOUT_IEN;
         Wk2114WriteReg(port,WK2XXX_SIER,sier);
         // 初始化FIFO和設置固定中斷觸點
         Wk2114WriteReg(port,WK2XXX_FCR,0XFF);
         //設置任意中斷觸點,如果下面的設置有效,那么上面FCR寄存器中斷的固定中斷觸點將失效
         Wk2114WriteReg(port,WK2XXX_SPAGE,1);//切換到page1
         Wk2114WriteReg(port,WK2XXX_RFTL,0X40);//設置接收觸點為64個字節(jié)
         Wk2114WriteReg(port,WK2XXX_TFTL,0X10);//設置發(fā)送觸點為16個字節(jié)
         Wk2114WriteReg(port,WK2XXX_SPAGE,0);//切換到page0
         //使能子串口的發(fā)送和接收使能
         scr=Wk2114ReadReg(port,WK2XXX_SCR);
         scr|=WK2XXX_TXEN|WK2XXX_RXEN;
         Wk2114WriteReg(port,WK2XXX_SCR,scr);
}
/******************************Wk2114Close*******************************************/
//函數功能:本函數會關閉當前子串口,和復位初始值;
/*********************************************************************************/

void Wk2114Close(unsigned char port)
{
    unsigned char gena,grst;
        //復位子串口
        grst=Wk2114ReadReg(WK2XXX_GPORT,WK2XXX_GRST);
        switch (port)
    {
          case 1://軟件復位子串口1
              grst&=~WK2XXX_UT1RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                  case 2://軟件復位子串口2
              grst&=~WK2XXX_UT2RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                   case 3://軟件復位子串口3
              grst&=~WK2XXX_UT3RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
                   case 4://軟件復位子串口4
              grst&=~WK2XXX_UT4RST;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
              break;
         }        
        //關閉子串口時鐘
    gena=Wk2114ReadReg(WK2XXX_GPORT,WK2XXX_GENA);
        switch (port)
    {
          case 1://使能子串口1的時鐘
              gena&=~WK2XXX_UT1EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                  case 2://使能子串口2的時鐘
              gena&=~WK2XXX_UT2EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                   case 3://使能子串口3的時鐘
              gena&=~WK2XXX_UT3EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
                   case 4://使能子串口4的時鐘
              gena&=~WK2XXX_UT4EN;
                      Wk2114WriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
              break;
         }        
}
/**************************Wk2114SetBaud*******************************************************/
//函數功能:設置子串口波特率函數、此函數中波特率的匹配值是根據11.0592Mhz下的外部晶振計算的
// port:子串口號
// baud:波特率大小.波特率表示方式,
//
/**************************Wk2114SetBaud*******************************************************/
void Wk2114SetBaud(unsigned char port,int baud)
{  
        unsigned char baud1,baud0,pres,scr;
        //如下波特率相應的寄存器值,是在外部時鐘為11.0592的情況下計算所得,如果使用其他晶振,需要重新計算
        switch (baud)
        {
        case 600:
                        baud1=0x4;
                        baud0=0x7f;
                        pres=0;
            break;
        case 1200:
                        baud1=0x2;
                        baud0=0x3F;
                        pres=0;
                        break;
        case 2400:
                        baud1=0x1;
                        baud0=0x1f;
                        pres=0;
                        break;
        case 4800:
                        baud1=0x00;
                        baud0=0x8f;
                        pres=0;
                        break;
        case 9600:
                        baud1=0x00;
                        baud0=0x47;
                        pres=0;
                        break;
        case 19200:
                        baud1=0x00;
                        baud0=0x23;
                        pres=0;
                        break;
        case 38400:
                        baud1=0x00;
                        baud0=0x11;
                        pres=0;
                        break;
        case 76800:
                        baud1=0x00;
                        baud0=0x08;
                        pres=0;
                        break;

        case 1800:
                        baud1=0x01;
                        baud0=0x7f;
                        pres=0;
                        break;
        case 3600:
                        baud1=0x00;
                        baud0=0xbf;
                        pres=0;
                        break;
        case 7200:
                        baud1=0x00;
                        baud0=0x5f;
                        pres=0;
                        break;
        case 14400:
                        baud1=0x00;
                        baud0=0x2f;
                        pres=0;
                        break;
        case 28800:
                        baud1=0x00;
                        baud0=0x17;
                        pres=0;
                        break;
        case 57600:
                        baud1=0x00;
                        baud0=0x0b;
                        pres=0;
            break;
        case 115200:
                        baud1=0x00;
                        baud0=0x05;
                        pres=0;
                        break;
        case 230400:
                        baud1=0x00;
                        baud0=0x02;
                        pres=0;
                        break;
        default:
                        baud1=0x00;
                        baud0=0x00;
                        pres=0;
    }
        //關掉子串口收發(fā)使能
        scr=Wk2114ReadReg(port,WK2XXX_SCR);
        Wk2114WriteReg(port,WK2XXX_SCR,0);
        //設置波特率相關寄存器
        Wk2114WriteReg(port,WK2XXX_SPAGE,1);//切換到page1
        Wk2114WriteReg(port,WK2XXX_BAUD1,baud1);
        Wk2114WriteReg(port,WK2XXX_BAUD0,baud0);
        Wk2114WriteReg(port,WK2XXX_PRES,pres);
        Wk2114WriteReg(port,WK2XXX_SPAGE,0);//切換到page0
        //使能子串口收發(fā)使能
        Wk2114WriteReg(port,WK2XXX_SCR,scr);
        
        
}


#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "wk2xxx.h"
#include "wk2xxx_test.h"
#include "exti.h"
/*
UART2為打印接口:TX2:PA2; RX2:PA3
UART1為主uart接口:TX1:PA9;RX1:PA10
RSTN:PB8
*/
void EXTI1_IRQHandler(void)
{
         u8 gifr,rxbuf[256];
         int rxlen;
  printf("IN EXTI1_IRQ!!!!\n");
        /*關閉LED燈*/
        LED1(LED_OFF);
        LED2(LED_OFF);
        LED3(LED_OFF);
        LED4(LED_OFF);

        if(EXTI_GetFlagStatus(EXTI_Line1)!= RESET)
        {           EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE1上的中斷標志位  
                        gifr=WkReadGReg(WK2XXX_GIFR);/**/
                do{
                        if(gifr&WK2XXX_UT1INT)//判斷子串口1是否有中斷
                        { /*數據處理*/
                                                /*數據接收*/
                                                rxlen=wk_RxChars(1,rxbuf);//一次接收的數據不會超過256Byte
                                                /*數據發(fā)送*/
                                                //把接收的數據發(fā)送出去
                                                wk_TxChars(1,rxlen,rxbuf);

                        }
                        
                        if(gifr&WK2XXX_UT2INT)//判斷子串口2是否有中斷
                        {
                                /*數據接收*/
                                                rxlen=wk_RxChars(2,rxbuf);//一次接收的數據不會超過256Byte
                                                /*數據發(fā)送*/
                                                //把接收的數據發(fā)送出去
                                                wk_TxChars(2,rxlen,rxbuf);
                        
                          }
                        if(gifr&WK2XXX_UT3INT)//判斷子串口3是否有中斷
                        {
                                /*數據接收*/
                                                rxlen=wk_RxChars(3,rxbuf);//一次接收的數據不會超過256Byte
                                                /*數據發(fā)送*/
                                                //把接收的數據發(fā)送出去
                                                wk_TxChars(3,rxlen,rxbuf);
                                   // printf("port!!!!\n");
                        }
                        if(gifr&WK2XXX_UT4INT)//判斷子串口4是否有中斷
                        {
                                /*數據接收*/
                                                rxlen=wk_RxChars(4,rxbuf);//一次接收的數據不會超過256Byte
                                                /*數據發(fā)送*/
                                                //把接收的數據發(fā)送出去
                                   //wk_TxChars(4,rxlen,rxbuf);
                        }
                        
                gifr=WkReadGReg(WK2XXX_GIFR);
                //printf("IN EXTI2_IRQ GIFR:0X%X !!!\n",gifr);
                }while(gifr&0x0f);
                printf("IN EXTI1_IRQ over! !!!\n");
        }
}
int main(void)
{               
        unsigned char dat1;
        int n,len;
        unsigned char sendbuf[256];
        for(n=0;n<256;n++)
          sendbuf[n]=n;
        //配置stm32串口相關
        delay_init();                     //延時函數初始化         
        NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
        uart_init(115200);         //串口初始化為115200
  uart2_init(115200);        
        WK_RstInit();
  printf("WK_UART_DEMO_V1.0.\n");
        dat1=0xff;
        Wk_BaudAdaptive();
        delay_ms(100);
        /*讀寫GNEA,測試主接口通信是否成功*/
        dat1=WkReadGReg(WK2XXX_GENA);
        printf("gena=0x%x.\n",dat1);
        ///////////////////////////////////////////////
        //初始化串口。
  Wk_Init(1);
        Wk_Init(2);
        Wk_Init(3);
        Wk_Init(4);
  //設置子串口波特率。
        Wk_SetBaud(1,115200);
        Wk_SetBaud(2,115200);
        Wk_SetBaud(3,115200);
        Wk_SetBaud(4,115200);
        EXTIX_Init();//初始化CPU外部中斷
        while(1)
        {
                Exti_Disable();/*關閉外部中斷響應*/
// /*中斷屏蔽區(qū),這樣可以防止中斷響應打亂spi的操作時序*/
// /*通常在中斷函數外部操作讀寫寄存器的時候,最好關斷中斷響應,但是這個時間也不要過長,過長導致子串口溢出,從而導致數據丟失*/
// /*如果對于大數據需要發(fā)送,一次操作不要超過256,最好不要讓程序阻塞在發(fā)送中*/
        len=wk_TxLen(4);/*判斷子串口4能寫入數據的個數*/
        wk_TxChars(4,len,sendbuf);/*寫入len個數據進入發(fā)送fifo*/
        Exti_Enable();/*開啟外部中斷響應*/
  }
}

Keil代碼下載與相關資料下載: WK2124 Resources V1.1.7z (3.9 MB, 下載次數: 43)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品极品美女在线观看免费 | 亚洲成人免费av | 伊人久久综合 | 亚洲一区二区免费视频 | 国产999精品久久久久久绿帽 | 亚欧洲精品在线视频免费观看 | 亚洲国产视频一区二区 | 国产成人高清 | 亚洲欧美另类在线观看 | 精品福利在线 | 在线观看免费国产 | 国产激情在线 | 日韩在线免费 | 99精品视频一区二区三区 | 欧美日韩国产精品一区 | 成人欧美一区二区三区黑人孕妇 | 一区二区三区视频免费观看 | 久久婷婷av | 日韩一区二区三区在线观看 | 综合成人在线 | 一a级片| 日本高清中文字幕 | 人人鲁人人莫人人爱精品 | 亚洲视频在线看 | 亚洲电影专区 | www久久99| 91精品国产91久久久久久最新 | 97天天干 | 一区视频在线播放 | 天天曰天天干 | 欧美日韩视频在线第一区 | 久久精品这里精品 | 国产成人精品免费视频 | 91在线精品一区二区 | 亚洲精品2| 91精品综合久久久久久五月天 | 国产精品视频不卡 | 亚洲成人综合在线 | 亚洲女人天堂网 | 日韩成人av在线 | 精品永久 |