日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

USB自定义HID设备实现-STM32

發布時間:2025/3/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB自定义HID设备实现-STM32 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該文檔使用USB固件庫,在其基礎上進行了自己的定制,完成了一個USB-HID設備,首先是usb_desc.c文件,里面存放了usb各種描述符的存在

#include "usb_desc.h"

?

//usb標準設備描述符

const u8 DinkUsbDeviceDescriptor[DINK_USB_SIZ_DEVICE_DESC] = {

?

??? USB_DEVICE_DESC_SIZE,???????????? //bLength字段。設備描述符的長度為18(0x12)字節

??? USB_DEVICE_DESCRIPTOR_TYPE,??????? ?? //bDescriptorType字段。設備描述符的編號為0x01

??? WBVAL(0x0200), ??????????? ????????? //bcdUSB字段。這里設置版本為USB1.1,即0x0110。

??? 0x00,???????????????????????????? //bDeviceClass字段。我們不在設備描述符中定義設備類,

??? 0x00,????????????????????????????? //bDeviceSubClass字段。bDeviceClass字段為0時,該字段也為0。

??? 0x00,??????????????????????????? ? //bDeviceProtocol字段。bDeviceClass字段為0時,該字段也為0。

??? 0x40,???????????????? ????????????? //bMaxPacketSize0字段。端點0的最大包長度。

??? WBVAL(0x7777),??????????????????? ?? //idVender字段。廠商ID號,我們這里取0x8888,僅供實驗用。

??? WBVAL(0x8888),??????????????????? ?? //idProduct字段。產品ID號,由于是第一個實驗,我們這里取0x0001。\。

??? WBVAL(0x0100), ???????? ?????????? // 設備的版本

??? 0x01,???????????????????????????? //iManufacturer字段。廠商字符串的索引值,為了方便記憶和管理

??? 0x02,???????????????????????????? //iProduct字段。產品字符串的索引值。剛剛用了1,這里就取2吧。

??? 0x03,??????????????????????????? ? //iSerialNumber字段。設備的序列號字符串索引值。

??? 0x01????????????????? ????????????? //bNumConfigurations字段。該設備所具有的配置數。

};

?

?

//USB報告描述符的定義

const u8 HID_ReportDescriptor[]=

{

0x06,0xA0,0xFF,//用法頁(FFA0h, vendor defined)

0x09, 0x01,//用法(vendor defined)

0xA1, 0x01,//集合(Application)

0x09, 0x02 ,//用法(vendor defined)

0xA1, 0x00,//集合(Physical)

0x06,0xA1,0xFF,//用法頁(vendor defined)

//輸入報告

0x09, 0x03 ,//用法(vendor defined)

0x09, 0x04,//用法(vendor defined)

0x15, 0x80,//邏輯最小值(0x80 or -128)

0x25, 0x7F,//邏輯最大值(0x7F or 127)

0x35, 0x00,//物理最小值(0)

0x45,0xFF,//物理最大值(255)

0x75, 0x08,//報告長度Report size (8位)

0x95, 0x40,//報告數值(64 fields)

0x81, 0x02,//輸入(data, variable, absolute)

//輸出報告

0x09, 0x05,//用法(vendor defined)

0x09, 0x06,//用法(vendor defined)

0x15, 0x80,//邏輯最小值(0x80 or -128)

0x25, 0x7F,//邏輯最大值(0x7F or 127)

0x35, 0x00,//物理最小值(0)

0x45,0xFF,//物理最大值(255)

0x75,0x08,//報告長度(8位)

0x95, 0x40,//報告數值(64 fields)

0x91, 0x02,//輸出(data, variable, absolute)

0xC0,//集合結束(Physical)

0xC0//集合結束(Application)

};

//通過上面的報告描述符的定義,我們知道返回的輸入報告具有8字節。

//輸出報告也有64字節。至于這64字節的數據是干什么用的,就要由用戶

//自己來決定了。

///報告描述符完畢

?

?

//usb配置描述符

const u8 DinkUsbConfigDescriptor[DINK_USB_SIZ_CONFIG_DESC] = {

??? /***************配置描述符***********************/

??? USB_CONFIGUARTION_DESC_SIZE,?????? //bLength字段。配置描述符的長度為9字節。

??? USB_CONFIGURATION_DESCRIPTOR_TYPE, //bDescriptorType字段。配置描述符編號為0x02。

??? //wTotalLength字段。配置描述符集合的總長度,

??? //包括配置描述符本身、接口描述符、類描述符、端點描述符等。

??? WBVAL(?

??? USB_CONFIGUARTION_DESC_SIZE +?????????? //配置描述符

??? USB_INTERFACE_DESC_SIZE???? +??????? //接口1描述符

??? 9?????????????????????????? +?????????? //hid描述符

??? USB_ENDPOINT_DESC_SIZE????? +?????????? //端點描述符

??? USB_ENDPOINT_DESC_SIZE????????????????? //端點描述符

??? ),

??? 0x01,????????????????????????????? ???? //bNumInterfaces字段。該配置包含的接口數,只有一個接口。

??? 0x01,????????????????????????????? ???? //bConfiguration字段。該配置的值為1。

??? 0x00,???????????????????????????? ???? //iConfigurationz字段,該配置的字符串索引。這里沒有,為0。

??? USB_CONFIG_BUS_POWERED ,??????????????? //bmAttributes字段,該設備的屬性

??? USB_CONFIG_POWER_MA(500),????????? ??????? //bMaxPower字段,該設備需要的最大電流量

?

??? /*********************第一個接口描述符,hid設備**********************/

??? USB_INTERFACE_DESC_SIZE,???????? ???? //bLength字段。接口描述符的長度為9字節。

??? USB_INTERFACE_DESCRIPTOR_TYPE,??? ?????? //bDescriptorType字段。接口描述符的編號為0x04。

??? 0x00,???????????????????????????? ???? //bInterfaceNumber字段。該接口的編號,第一個接口,編號為0。

??? 0x00,??????????????????????????? ????? //bAlternateSetting字段。該接口的備用編號,為0。

??? 0x02,?????????????????????????????????? //bNumEndpoints字段。非0端點的數目。該接口有2個批量端點

?

??? USB_DEVICE_CLASS_HUMAN_INTERFACE, ????? //bInterfaceClass字段。該接口所使用的類。大容量存儲設備接口類的代碼為0x08。,

???

??? 0x00,?????????????????????????????????? //bInterfaceSubClass字段。該接口所使用的子類。在HID1.1協議中,

??????????????????????????????????????????? //只規定了一種子類:支持BIOS引導啟動的子類。

??????????????????????????????????????????? //USB鍵盤、鼠標屬于該子類,子類代碼為0x01。

??????????????????????????????????????????? //但這里我們是自定義的HID設備,所以不使用子類。

???

??? 0x00,?????????????????????????????????? //bInterfaceProtocol字段。如果子類為支持引導啟動的子類,

??????????????????????????????????????????? //則協議可選擇鼠標和鍵盤。鍵盤代碼為0x01,鼠標代碼為0x02。

??????????????????????????????????????????? //自定義的HID設備,也不使用協議。

?

??? 0x00,?????????????????????????????????? //iConfiguration字段。該接口的字符串索引值。這里沒有,為0。

?

??? /*********************HID報告描述符*************************/

??? //bLength字段。本HID描述符下只有一個下級描述符。所以長度為9字節。

??? ?0x09,

??? ?

??? ?//bDescriptorType字段。HID描述符的編號為0x21。

??? ?0x21,

??? ?

??? ?//bcdHID字段。本協議使用的HID1.1協議。注意低字節在先。

??? ?0x10,

??? ?0x01,

??? ?

??? ?//bCountyCode字段。設備適用的國家代碼,這里選擇為美國,代碼0x21。

??? ?0x21,

??? ?

??? ?//bNumDescriptors字段。下級描述符的數目。我們只有一個報告描述符。

??? ?0x01,

??? ?

??? ?//bDescriptorType字段。下級描述符的類型,為報告描述符,編號為0x22。

??? ?0x22,

??? ?

??? ?//bDescriptorLength字段。下級描述符的長度。下級描述符為報告描述符。

??? ?sizeof(HID_ReportDescriptor)&0xFF,

??? ?(sizeof(HID_ReportDescriptor)>>8)&0xFF,

??? /*********************端點描述符**********************************/

??? /* 端點描述符 */

??? USB_ENDPOINT_DESC_SIZE,?????????? ???? //bLength字段。端點描述符長度為7字節。

??? USB_ENDPOINT_DESCRIPTOR_TYPE,???? ?????? //bDescriptorType字段。端點描述符編號為0x05。

??? USB_ENDPOINT_IN(1),????????????? ?????? //bEndpointAddress字段。端點的地址。我們使用D12的輸入端點1。

??? USB_ENDPOINT_TYPE_INTERRUPT,? ??????????? //bmAttributes字段。D1~D0為端點傳輸類型選擇。

??? WBVAL(0x0040),???????????????????? ????? //wMaxPacketSize字段。該端點的最大包長。最大包長為64字節。

??? 0x01,????????? ??? ????????????????????????? //bInterval字段。端點查詢的時間,端點查詢的時間,此處無意義。

??? /***********************端點描述符*******************************************/

??? USB_ENDPOINT_DESC_SIZE,?????????? ???? //bLength字段。端點描述符長度為7字節。

??? USB_ENDPOINT_DESCRIPTOR_TYPE,???? ?????? //bDescriptorType字段。端點描述符編號為0x05。

??? USB_ENDPOINT_OUT(1),????????????? ????? //bEndpointAddress字段。端點的地址。我們使用D12的輸入端點1。

??? USB_ENDPOINT_TYPE_INTERRUPT,????? ??????? //bmAttributes字段。D1~D0為端點傳輸類型選擇。

??? WBVAL(0x0040),???????????????????? ????? //wMaxPacketSize字段。該端點的最大包長。最大包長為64字節。

??? 0x01,????????? ??? ????????????????????????? //bInterval字段。端點查詢的時間,端點查詢的時間,此處無意義。

};

?

?

?

?

?

/************************語言ID的定義********************/

const u8 DinkUsbLanguageId[DINK_USB_SIZ_STRING_LANGID]=

{

??? 0x04, //本描述符的長度

??? 0x03, //字符串描述符

??? //0x0409為美式英語的ID

??? 0x09,

??? 0x04

};

?

?

語言ID完畢//

?

//Unicode 字符串描述符

//鄧小俊的usb鼠標

const u8 DinkUsbManufacturerStringDescriptor[DINK_USB_SIZ_STRING_VENDOR]=

{

??? 32,???????? //該描述符的長度為32字節

??? 0x03,?????? //字符串描述符的類型編碼為0x03

??? 0x44, 0x00, //D

??? 0x49, 0x00, //I

??? 0x4e, 0x00, //N

??? 0x4b, 0x00, //K

??? 0x5f, 0x00, //_

??? 0x48, 0x00, //H

??? 0x49, 0x00, //I

??? 0x44, 0x00, //D

??? 0x5f, 0x00, //_

??? 0x44, 0x00, //D

??? 0x45, 0x00, //E

??? 0x56, 0x00, //V

??? 0x49, 0x00, //I

??? 0x43, 0x00, //C

??? 0x45, 0x00? //E

?

};

/廠商字符串結束/

?

?

//產品字符串描述符

const u8 DinkUsbProductStringDescriptor[DINK_USB_SIZ_STRING_PRODUCT]=

{

??? 32,???????? //該描述符的長度為32字節

??? 0x03,?????? //字符串描述符的類型編碼為0x03

??? 0x44, 0x00, //D

??? 0x49, 0x00, //I

??? 0x4e, 0x00, //N

??? 0x4b, 0x00, //K

??? 0x5f, 0x00, //_

??? 0x48, 0x00, //H

??? 0x49, 0x00, //I

??? 0x44, 0x00, //D

??? 0x5f, 0x00, //_

??? 0x44, 0x00, //D

??? 0x45, 0x00, //E

??? 0x56, 0x00, //V

??? 0x49, 0x00, //I

??? 0x43, 0x00, //C

??? 0x45, 0x00? //E

};

產品字符串結束

?

//字符串“2008-07-07”的Unicode編碼

//8位小端格式

const u8 DinkUsbSerialNumberStringDescriptor[DINK_USB_SIZ_STRING_SERIAL]={

??? 22,???????? //該描述符的長度為22字節

??? 0x03,?????? //字符串描述符的類型編碼為0x03

??? 0x32, 0x00, //2

??? 0x30, 0x00, //0

??? 0x31, 0x00, //1

??? 0x35, 0x00, //5

??? 0x2d, 0x00, //-

??? 0x30, 0x00, //0

??? 0x33, 0x00, //3

??? 0x2d, 0x00, //-

??? 0x32, 0x00, //2

??? 0x31, 0x00? //1

};

//產品序列號字符串結束/

?

//產品序列號

u8 DinkUsbStringSerialUniqueId[DINK_USB_SIZ_STRING_SERIAL_UNIQUE_ID] =

{

??? DINK_USB_SIZ_STRING_SERIAL_UNIQUE_ID,??????? //描述符長度

??? 0x03????????????????????????????????????????????????????? //描述符類型編碼

/* Serial number該編碼將會

?

可以通過修改該文件實現不同的設備,第二是usb_prop.c文件,定義了一系列的回調函數,在usb枚舉階段使用

#include "usb_prop.h"

?

u32 ProtocolValue;

?

//表明有多少端點,多少種配置

DEVICE Device_Table =

{

??? EP_NUM,

??? 1

};

?

//static u8 s_Request = 0;//記錄當前請求值

?

//設備描述符

ONE_DESCRIPTOR Device_Descriptor =

{

??? (u8*)DinkUsbDeviceDescriptor,

??? DINK_USB_SIZ_DEVICE_DESC

};

?

//配置描述符

ONE_DESCRIPTOR Config_Descriptor =

{

??? (u8*)DinkUsbConfigDescriptor,

??? DINK_USB_SIZ_CONFIG_DESC

};

//報告描述符

ONE_DESCRIPTOR DinkUsb_Report_Descriptor =

{

??? (u8*)HID_ReportDescriptor,

??? HID_ReportDescSize

};

?

//報告描述符

ONE_DESCRIPTOR DinkUsb_Hid_Descriptor =

{

??? (u8*)(DinkUsbConfigDescriptor+9),

??? 9

};

?

?

?

//字符串描述符

ONE_DESCRIPTOR String_Descriptor[4] =

{

??? {(u8*)DinkUsbLanguageId, DINK_USB_SIZ_STRING_LANGID},

??? {(u8*)DinkUsbManufacturerStringDescriptor, DINK_USB_SIZ_STRING_VENDOR},

??? {(u8*)DinkUsbProductStringDescriptor, DINK_USB_SIZ_STRING_PRODUCT},

??? {(u8*)DinkUsbSerialNumberStringDescriptor, DINK_USB_SIZ_STRING_SERIAL}

};

?

?

?

//USB過程處理函數數組

DEVICE_PROP Device_Property =

{

??? DinkUsbInit,

??? DinkUsbReset,

??? DinkUsbStatus_In,

??? DinkUsbStatus_Out,

??? DinkUsbData_Setup,

??? DinkUsbNoDataSetup,

??? DinkUsbGetInterfaceSetting,

??? DinkUsbGetDeviceDescriptor,

??? DinkUsbGetConfigDescriptor,

??? DinkUsbGetStringDescriptor,

??? 0,

??? 0x40 /*MAX PACKET SIZE*/

};

?

//usb標準數據請求結構體

//只實現了兩個,剩下的用nop方式解決了

USER_STANDARD_REQUESTS User_Standard_Requests =

{

??? DinkUsbGetConfiguration,

??? DinkUsbSetConfiguration,

??? DinkUsbGetInterface,

??? DinkUsbSetInterface,

??? DinkUsbGetStatus,

??? DinkUsbClearFeature,

??? DinkUsbSetEndPointFeature,

??? DinkUsbSetDeviceFeature,

??? DinkUsbSetDeviceAddress

};

?

?

?

//設備初始化

void DinkUsbInit(void)

{

??? Get_SerialNum();??????? //構建字符串描述符

??? pInformation->Current_Configuration = 0;????? //當前選擇的配置為0

??? PowerOn();????????? //連接USB

??? _SetISTR(0);

??? wInterrupt_Mask = IMR_MSK;

??? _SetCNTR(wInterrupt_Mask);

??? bDeviceState = UNCONNECTED;?? //設備狀態初始化為未連接狀態

??? usb_debug_printf("USB Init\r\n");

}

?

//設備復位

void DinkUsbReset(void)

{

??? Device_Info.Current_Configuration = 0;? //選擇當前配置為0

??? pInformation->Current_Feature = DinkUsbConfigDescriptor[7]; //獲取配置描述符中當前設備屬性

??? pInformation->Current_Interface = 0;//設置當前設備接口

??? SetBTABLE(BTABLE_ADDRESS);//設置緩沖區地址

???

??? SetEPType(ENDP0, EP_CONTROL);//控制端點

??? SetEPTxStatus(ENDP0, EP_TX_STALL);

??? SetEPRxAddr(ENDP0, ENDP0_RXADDR);//設置端點緩沖區地址

??? SetEPTxAddr(ENDP0, ENDP0_TXADDR);

??? Clear_Status_Out(ENDP0);

??? SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);//設置接收最大長度

??? SetEPRxValid(ENDP0);

???

??? SetEPType(ENDP1, EP_INTERRUPT);//初始化端點1為中斷傳輸模式,用來報告一些狀態

??? SetEPTxAddr(ENDP1, ENDP1_TXADDR);//設置端點地址

??? SetEPRxAddr(ENDP1, ENDP1_RXADDR);//設置端點地址

??? SetEPRxStatus(ENDP1, EP_RX_VALID);//使能接收

??? SetEPTxStatus(ENDP1, EP_TX_NAK);? //不使能發送

??? SetEPRxCount(ENDP1, 64);//設置接收最大長度

??? Clear_Status_Out(ENDP1);

?

??? bDeviceState = ATTACHED;//設備插入

???

??? SetDeviceAddress(0);//設置當前地址為0

??? usb_debug_printf("USB Reset\r\n");

}

?

//不知道干嘛的

void DinkUsbStatus_In(void)

{

??? return;

}

//不知道干嘛的

void DinkUsbStatus_Out(void)

{

??? return;

}

?

u8 *DinkUsbGetReportDescriptor(u16 Length)

{

??? usb_debug_printf("獲取報告描述符\r\n");

??? return Standard_GetDescriptorData(Length, &DinkUsb_Report_Descriptor);

}

?

u8 *DinkUsbGetHIDDescriptor(u16 Length)

{

??? usb_debug_printf("獲取HID述符\r\n");

??? return Standard_GetDescriptorData(Length, &DinkUsb_Hid_Descriptor);

}

?

u8 *DinkUsbGetProtocolValue(u16 Length)

{

??? usb_debug_printf("獲取協議\r\n");

??? if (Length == 0)

??? {

??????? pInformation->Ctrl_Info.Usb_wLength = 1;

??????? return NULL;

??? }

??? else

??? {

??????? return (u8 *)(&ProtocolValue);

??? }

}

?

RESULT DinkUsbData_Setup(u8 RequestNo)

{

??? u8 *(*CopyRoutine)(u16);

?

??? CopyRoutine = NULL;

??? if ((RequestNo == GET_DESCRIPTOR)

??? && (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))

??? && (pInformation->USBwIndex0 == 0))

??? {

??????? //獲取報告描述符

??????? if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)

??????? {

??????????? CopyRoutine = DinkUsbGetReportDescriptor;

??????? }

??????? //獲取HID描述符

??????? else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)

??????? {

??????????? CopyRoutine = DinkUsbGetHIDDescriptor;

??????? }

?

??? }

?

??? /*** GET_PROTOCOL ***/

??? else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))

??? ?? && RequestNo == GET_PROTOCOL)

??? {

??????? CopyRoutine = DinkUsbGetProtocolValue;//獲取協議值

??? }

?

?

??? if (CopyRoutine == NULL)

??? {

??????? return USB_UNSUPPORT;

??? }

?

??? pInformation->Ctrl_Info.CopyData = CopyRoutine;

??? pInformation->Ctrl_Info.Usb_wOffset = 0;

??? (*CopyRoutine)(0);

??? return USB_SUCCESS;

}

?

RESULT DinkUsbSetProtocol(void)

{

? u8 wValue0 = pInformation->USBwValue0;

? ProtocolValue = wValue0;

? return USB_SUCCESS;

}

?

RESULT DinkUsbNoDataSetup(u8 RequestNo)

{

??? if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))

??? && (RequestNo == SET_PROTOCOL))

??? {

??????? usb_debug_printf("設置協議\r\n");

??????? return DinkUsbSetProtocol();

??? }

??? else

??? {

??????? return USB_UNSUPPORT;

??? }

}

?

?

RESULT DinkUsbGetInterfaceSetting(u8 Interface, u8 AlternateSetting)

{

??? if (AlternateSetting > 0)//配置數量

??? {

??????? usb_debug_printf("設置配置\r\n");

??????? return USB_UNSUPPORT;

??? }

??? else if (Interface > 1)//接口數量

??? {

??????? usb_debug_printf("設置接口\r\n");

??????? return USB_UNSUPPORT;

??? }

??? return USB_SUCCESS;

}

?

//獲取設備描述符

u8 *DinkUsbGetDeviceDescriptor(u16 Length)

{

??? usb_debug_printf("獲取設備描述符\r\n");

??? return Standard_GetDescriptorData(Length, &Device_Descriptor);

}

//配置描述符

u8 *DinkUsbGetConfigDescriptor(u16 Length)

{

??? usb_debug_printf("獲取配置描述符\r\n");

??? return Standard_GetDescriptorData(Length, &Config_Descriptor);

}

//字符串描述符

u8 *DinkUsbGetStringDescriptor(u16 Length)

{

?

??? u8 wValue0 = pInformation->USBwValue0;

??? usb_debug_printf("獲取字符串描述符 %d\r\n",wValue0);

??? if (wValue0 > 4)

??? {

??????? return NULL;

??? }

??? else

??? {

??????? return Standard_GetDescriptorData(Length, &String_Descriptor[wValue0]); //返回字符串描述符

??? }

}

?

?

?

?

?

//將設備狀態上傳到配置數據中

void DinkUsbSetConfiguration(void)

{

?

??? DEVICE_INFO *pInfo = &Device_Info;

??? usb_debug_printf("設置配置\r\n");

??? if (pInfo->Current_Configuration != 0)

??? {

??????? bDeviceState = CONFIGURED;

??? }

}

//將地址設置上傳

void DinkUsbSetDeviceAddress (void)

{

??? usb_debug_printf("設置地址\r\n");

??? bDeviceState = ADDRESSED;

}

?

?

其中最核心的兩個函數分別是復位和初始化,復位的時候要將端點配置好,并且接受最好要使能,否則無法接收數據(后期自己使能也可以),然后就是端點的處理函數了usb_endp.c

#include "usb_endp.h"

?

//發送完成置1 發送未完成置0

u8 sendOk = 1;

//接收到數據該設置為1,數據處理完成之后修改為0

u8 ReceiveOk = 0;

?

void EP1_IN_Callback(void)

{

??? //設備向主機發送數據的回調函數

??? sendOk = 1;//發送成功為1

??? SetEPTxStatus(ENDP1, EP_TX_NAK);//發送成功等待第二次設置為valid

}

?

void EP1_OUT_Callback(void)

{

??? //接收了一次數據之后等待數據處理,將接受響應設置為NAK

??? //處理完成之后再設置為VALID

??? SetEPRxStatus(ENDP1, EP_RX_NAK);//NAK接收

??? ReceiveOk = 1;//有數據標志為1

?

}

?

要想使能這些函數,需要將端點響應函數打開

另外,單片機應當來處理或者發送數據,依靠usb_data_process.h文件完成

#include "usb_data_process.h"

?

?

//HID發送數據

//返回1發送失敗 返回0發送成功

u8 HID_Send_Data(u8* buffer,u8 length)

{

??? if(sendOk == 1)

??? {

??????? if(length == 0)

??????? {

??????????? SetEPTxStatus(ENDP1, EP_TX_NAK);//不發送

??????? }

??????? else

??????? {

??????????? UserToPMABufferCopy(buffer, GetEPTxAddr(ENDP1), length);

??????????? SetEPTxCount(ENDP1, length);

??????????? SetEPTxValid(ENDP1);//使能發送

??????????? sendOk = 0;//設置發送未完成狀態,等待發送回調函數將數據發送到主機

??????? }

??????? return 0;

??? }

??? else

??? {

??????? return 1;//上一次的數據還沒發送出去,所以這次發送失敗

??? }

}

?

?

//HID接收數據處理

u8 HID_Receive_Data(u8* buffer)

{

??? u16 length = 0;//獲取接收到的數據長度

??? u8 i = 0;

??? if(ReceiveOk == 1)//有數據

??? {

??????? length = GetEPRxCount(ENDP1);

??????? if(length == 0)return 0;

??????? else

??????? {

??????????? PMAToUserBufferCopy(buffer, GetEPRxAddr(ENDP1), length);

??????????? SetEPRxValid(ENDP1);//使能接收

??????????? ReceiveOk = 0;

???????????

??????????? printf("hid receive : ");

??????????? for(i = 0; i < length; i++)

??????????? {

??????????????? printf("%c ",buffer[i]);

??????????? }

??????????? printf("\r\n");

???????????

??????????? return length;//返回接收到的數據

??????? }

??? }

??? else

??? {

??????? //沒有數據,直接為0

??????? return 0;

??? }

}

?

?

做好這里,基本上就能實現通訊了,詳細工程請查看文章最后的鏈接

?

?

?http://download.csdn.net/detail/dengrengong/8523351

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/dengxiaojun/p/4357720.html

總結

以上是生活随笔為你收集整理的USB自定义HID设备实现-STM32的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲人xxx | 日本中文乱码卡一卡二新区 | 欧美做受xxx | 国产精品mm | 亚洲aⅴ在线观看 | 久久草草影视免费网 | 久久午夜免费观看 | 日韩电影精品 | 精品国产一区二区三区久久 | 欧美激情精品 | 不卡视频在线看 | 日日操网站| 91久久国产露脸精品国产闺蜜 | 日韩,中文字幕 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产成人精品不卡 | av成人在线观看 | 成人精品久久 | 超碰在线天天 | 日韩亚洲在线观看 | 久久美女电影 | 天天干夜夜爱 | 日本成人黄色片 | 国产色女人 | 免费又黄又爽的视频 | 日韩中文字幕免费 | 五月婷在线观看 | 免费大片av| av三级在线免费观看 | 在线久草视频 | 国产午夜一级毛片 | www黄色com| 美女免费电影 | 在线视频一区观看 | 国产精品都在这里 | 天天干天天射天天操 | 日韩资源在线观看 | 超碰在线91| 国产精品久久久久久久久免费 | 操一草 | 超碰97人人爱 | 亚洲午夜久久久影院 | 午夜精品久久久久久久99 | 一区二区三区在线免费 | 中文久草| 911久久香蕉国产线看观看 | 91九色视频导航 | 日韩久久久久久 | 国产第一页精品 | 国产黄色大片 | 久久久99国产精品免费 | 97视频资源| 一级成人免费视频 | 国产裸体视频网站 | 国产色在线 | 日韩午夜av电影 | 亚洲国产成人在线观看 | 日韩欧美一区二区三区视频 | 中文在线免费看视频 | 手机在线观看国产精品 | 亚洲国产精品成人综合 | 在线黄色观看 | 日韩在线免费播放 | 天天操天天摸天天爽 | 99r在线观看 | 国产主播大尺度精品福利免费 | 日韩精品国产一区 | 999色视频 | 国产福利91精品一区 | www.com操| 成人免费91 | 婷婷丁香视频 | 九九有精品 | 碰超在线| 中文字幕观看在线 | 日韩免费av网址 | 91传媒免费观看 | 波多野结衣在线视频一区 | 又色又爽又黄高潮的免费视频 | 日韩欧美国产视频 | 成人黄色在线视频 | 久章草在线观看 | 中文资源在线观看 | 92精品国产成人观看免费 | 五月婷网 | 久久a热6| 日韩高清在线不卡 | 色香蕉在线 | 久草国产视频 | 友田真希av | 三级黄免费看 | 九色91av | 国产精品亚洲视频 | 国产精品久久久久久久久久直播 | 久久超级碰视频 | 狠狠色伊人亚洲综合成人 | 亚洲综合网站在线观看 | 国产第一二区 | 超碰在线公开 | 久草在线视频新 | 在线日本看片免费人成视久网 | 精品久久网 | 国产精品一区二区三区在线免费观看 | 美女精品国产 | 久久99久久99精品免观看软件 | 国产高清视频在线播放 | 午夜 久久 tv | 狠狠插狠狠干 | 91精品1区 | 免费网站污 | 99精品国产一区二区 | 黄色免费网站下载 | 丰满少妇对白在线偷拍 | 五月婷丁香网 | 黄网站www | 人人澡人人澡人人 | 国产高清免费观看 | 久久久性 | 久久不卡免费视频 | 日本中文字幕在线免费观看 | 97超碰国产精品女人人人爽 | wwwww.国产| 亚洲精品 在线视频 | 久久精品伊人 | 97超碰国产在线 | 亚洲国产资源 | 91综合在线| 懂色av一区二区三区蜜臀 | 亚洲精品人人 | 就要干b | 亚洲高清网站 | 国产精品免费高清 | 精品国产乱码久久久久久三级人 | 亚洲视频免费在线观看 | 免费中文字幕 | 国产精品久久久久久久久久免费 | 亚洲精品视频网站在线观看 | 日韩久久午夜一级啪啪 | 国产亚洲精品久久久久动 | 五月婷婷在线观看 | 亚洲首页 | 日韩精品久久久久久中文字幕8 | 久久综合狠狠综合久久狠狠色综合 | 免费情趣视频 | 九九久| 91九色性视频 | 国产五月婷婷 | 色天天综合久久久久综合片 | 毛片黄色一级 | 天天色图| 国产精品入口麻豆www | 97超碰成人在线 | 99精品国产一区二区三区麻豆 | 精品中文字幕视频 | 日韩国产欧美在线播放 | 黄色软件视频网站 | 亚洲 欧美 精品 | 亚洲最大av网站 | 日韩三级精品 | 中文字幕国产一区二区 | 亚洲人成网站精品片在线观看 | 国产精品女主播一区二区三区 | 蜜臀av夜夜澡人人爽人人桃色 | av在线播放网址 | 少妇性xxx| av网址在线播放 | 亚洲人成在线电影 | 日韩在线一区二区免费 | 911久久香蕉国产线看观看 | 久久不卡日韩美女 | 国产精品videoxxxx | 日韩理论电影在线观看 | 中文字幕在线电影 | 日韩欧美亚州 | 日韩视频一区二区三区在线播放免费观看 | www.91国产 | www.香蕉视频 | 欧美日韩精品综合 | 4hu视频| 中文字幕中文字幕在线中文字幕三区 | av电影不卡在线 | 久久国产露脸精品国产 | 日韩一区二区在线免费观看 | 天天射天天干天天 | 欧美另类老妇 | 久久国产精品99国产 | 中文字幕乱码日本亚洲一区二区 | 黄色a一级视频 | av经典在线 | 在线观看一级片 | 久久99热久久99精品 | 日韩欧美综合在线视频 | 91精品国自产在线偷拍蜜桃 | 草莓视频在线观看免费观看 | 国产精品毛片一区视频播不卡 | 在线视频黄 | 免费网站在线观看人 | 91久草视频| 亚洲va综合va国产va中文 | 久久9精品| 色婷婷婷 | 黄污网站在线观看 | 久久成人在线视频 | 午夜国产在线观看 | 免费看搞黄视频网站 | 国产色视频网站 | 91污在线| 久久综合爱| 亚洲精品国产精品久久99热 | 久久精品网站视频 | 手机在线黄色网址 | 天天摸天天弄 | 伊人久久五月天 | 国产电影黄色av | 成人在线视 | 亚洲国产成人精品在线观看 | av在线直接看 | 亚洲伊人第一页 | 黄色片网站免费 | 国产免费三级在线观看 | 日韩18p| 国产精品99免视看9 国产精品毛片一区视频 | 天天视频色版 | 中文av一区二区 | 欧美99热 | 欧美一区二区在线看 | 人人爱人人舔 | 黄色一级大片在线免费看国产一 | 欧洲av在线| 国产美女视频网站 | 久久综合色一综合色88 | 国产精品麻豆果冻传媒在线播放 | 国产成人精品亚洲日本在线观看 | 国产日本在线观看 | 国产成人av综合色 | 久久精品伊人 | 天堂av官网 | 看片网站黄色 | 丁香婷婷激情国产高清秒播 | 国产一级在线免费观看 | 天天插综合网 | 久草精品在线 | 国产在线精 | av大片免费 | 久久久精品久久日韩一区综合 | 久要激情网| 日韩视频免费 | 天天操天天操天天操天天操天天操天天操 | 午夜精品久久久久久久久久久久久久 | 2024av| 国产精品手机看片 | 国产又黄又爽无遮挡 | 亚洲天堂网视频在线观看 | 在线观看亚洲视频 | 色九九影院 | 成人v| 免费三级黄色片 | 天天干 天天摸 天天操 | 久久久久成 | 国产一区国产二区在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 日韩视频精品在线 | 天天色天天 | 97免费公开视频 | 五月天亚洲精品 | 精品国产精品久久 | 91免费日韩| 在线免费观看视频 | 国产区第一页 | 欧美一二三在线 | 成人黄色小视频 | 九九热精品在线 | 国产成人a v电影 | 亚洲国产精彩中文乱码av | 97国产情侣爱久久免费观看 | 国产视频观看 | 国产露脸91国语对白 | 久久在线观看 | 久久国产经典视频 | 一本一本久久a久久精品综合 | 国产亚洲精品女人久久久久久 | 伊色综合久久之综合久久 | 亚洲黄色av网址 | 成人欧美一区二区三区在线观看 | 在线观看网站你懂的 | 久久电影国产免费久久电影 | 国产男女免费完整视频 | 激情深爱五月 | 伊人五月天 | 天堂av在线网址 | 97精品超碰一区二区三区 | 精品在线观看视频 | 久草av在线播放 | 深夜福利视频一区二区 | 色综合久久久久综合体桃花网 | 国产精品一区二区三区在线看 | 夜夜夜| 欧美久久综合 | 在线精品一区二区 | 国产美女黄网站免费 | 国产精品黄色影片导航在线观看 | 91日韩精品视频 | 在线三级av | 99爱这里只有精品 | 日韩一级精品 | 超碰免费在线公开 | 天天插视频 | 亚洲综合色丁香婷婷六月图片 | 天天综合网在线 | 在线观看的a站 | 美女视频黄在线观看 | 亚洲三级av | 国内精品久久影院 | 欧美 日韩 国产 中文字幕 | 麻豆精品国产传媒 | 国产高清在线观看av | 久久视频中文字幕 | 免费观看第二部31集 | 99999精品| 免费高清在线观看成人 | 亚洲免费高清视频 | 99热手机在线观看 | 日本动漫做毛片一区二区 | 天天在线免费视频 | 久久久www免费电影网 | 日韩欧美91 | 亚洲国产精彩中文乱码av | 久久午夜免费视频 | 亚洲国产播放 | 久久精品99国产精品酒店日本 | 在线观看完整版 | 91在线免费观看网站 | 美女视频黄是免费的 | 亚洲精品a区| 在线观看精品 | 青青河边草观看完整版高清 | 又黄又色又爽 | 最新免费av在线 | 天天干天天干天天干天天干天天干天天干 | 久 久久影院 | 国产亚洲人成网站在线观看 | 日韩在线免费不卡 | 精品国产成人在线影院 | 国产中文字幕在线看 | 亚洲精品麻豆视频 | 久久精品99久久 | 亚洲精品久久视频 | 深爱五月激情网 | 日韩高清在线一区二区 | 色a资源在线 | 国产精品久久久久一区二区 | 在线色网站| 超碰在线官网 | 人人网人人爽 | 黄色一区二区在线观看 | 黄视频色网站 | 亚洲欧美国产视频 | 日韩 在线观看 | 91精品久久久久久久91蜜桃 | 奇米影视在线99精品 | 亚洲码国产日韩欧美高潮在线播放 | 视频成人永久免费视频 | 九九免费在线视频 | wwwwwww色| 久久激情视频免费观看 | 欧美综合在线视频 | 亚洲成人一二三 | 91九色蝌蚪在线 | 欧美一区在线看 | 三级毛片视频 | 激情综合狠狠 | 久久久国产精品成人免费 | 99精品在线观看视频 | av在线电影网站 | 国产午夜精品免费一区二区三区视频 | 久久99久久99精品免费看小说 | 亚洲国产成人高清精品 | 91在线日本 | 亚洲性少妇性猛交wwww乱大交 | 97在线播放| 日本99热 | 色综合中文综合网 | 九九久久免费 | 国产亚洲小视频 | 婷婷日| 久久专区 | 中文在线免费观看 | 爱av在线网 | av电影免费看 | 欧美日韩不卡在线观看 | 中文字幕人成不卡一区 | 亚洲视频在线视频 | www天天干| 亚洲成人黄色在线 | 日韩电影中文字幕在线 | 国产黑丝袜在线 | 国产精品久久久精品 | 欧美性生交大片免网 | 国产精品久久久久久av | 国产私拍在线 | 在线国产欧美 | 中文电影网 | 干狠狠 | 亚洲精品在线观看的 | 一区二区三区在线视频111 | 亚洲九九 | 国产不卡精品 | 天天干夜夜夜操天 | 天天操人人干 | 18久久久| 国产经典av | 国产在线观看免费 | 天天干,狠狠干 | 伊人久久电影网 | 综合在线色 | 久久久久亚洲a | 色五月激情五月 | 这里只有精品视频在线 | 欧美动漫一区二区三区 | 精品久久在线 | 日韩美女免费线视频 | 欧美激情另类文学 | 欧美一二区视频 | 成人在线免费av | 国产一区视频免费在线观看 | 国产精品破处视频 | 欧美电影在线观看 | 久久精品国产免费看久久精品 | 天天av在线播放 | 2023亚洲精品国偷拍自产在线 | 午夜精品久久久久久 | 亚洲精品久久久蜜臀下载官网 | 久久综合激情 | 青青河边草免费视频 | 69夜色精品国产69乱 | 天天操 夜夜操 | 日韩欧美国产精品 | 成人av免费电影 | 91精品国产综合久久福利 | 亚洲黄色免费电影 | 国产精品久久久久久久久久久久午夜片 | 欧美日韩一区二区视频在线观看 | 在线观看网站黄 | www.久久久久| 五月天com | 免费观看一级特黄欧美大片 | 激情五月婷婷丁香 | 91人人爽人人爽人人精88v | 国产 中文 日韩 欧美 | 国产一区久久 | 国产成人香蕉 | 777久久久| 精品在线视频一区二区三区 | 精品国产乱码久久久久久1区二区 | 人人草网站 | 福利电影久久 | 久久99国产视频 | 久久国产一二区 | 日韩欧美在线影院 | 天天干天天弄 | 亚洲国产精品一区二区尤物区 | 国内精品久久久久久久久久久久 | 精品国产一区二区三区在线 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 91精品第一页 | 国产精品手机在线观看 | 成人免费看电影 | 欧美日韩高清 | 日日婷婷夜日日天干 | 国产精品久久久久久久久久久久久久 | 9在线观看免费高清完整版 玖玖爱免费视频 | 午夜精品久久久 | 国产视频不卡 | 成片视频在线观看 | 人人添人人澡人人澡人人人爽 | 91香蕉视频黄 | 久久成人视屏 | 日韩va欧美va亚洲va久久 | 粉嫩av一区二区三区免费 | 99久高清在线观看视频99精品热在线观看视频 | 中文字幕一区在线观看视频 | 国产视频1| 美女精品在线 | 日韩一级理论片 | 网站在线观看你们懂的 | 天天操天天色天天射 | 国产精品丝袜久久久久久久不卡 | www.888.av| 黄污网站在线观看 | 久久午夜影视 | 91成品人影院 | 日韩高清成人 | 久久经典国产视频 | 久久艹中文字幕 | 亚洲成av人影院 | 国产美女精品 | 久久黄色小说视频 | 黄色a级片在线观看 | 99在线视频免费观看 | 97精品国产97久久久久久 | 国产96在线观看 | 久久久18 | 久久午夜国产精品 | 丁香五月亚洲综合在线 | 在线免费精品视频 | 久草久视频 | 日韩二区三区在线 | 一区二区视频电影在线观看 | 久久免费视频在线 | 国产精品91一区 | 国产亚洲字幕 | 粉嫩av一区二区三区免费 | 亚洲精品一区二区在线观看 | 五月天婷婷综合 | 91免费的视频在线播放 | 一区二区三区在线播放 | www.com久久 | 亚洲视频免费在线 | 青青草久草在线 | 在线精品视频在线观看高清 | 狠狠色丁香久久婷婷综 | 亚洲成人欧美 | 狠狠躁日日躁狂躁夜夜躁 | 精品国产99国产精品 | 日韩在线免费视频观看 | 久草精品在线播放 | 久久久久久久久久久网站 | 久草网在线视频 | 久久调教视频 | 91香蕉视频色版 | 不卡视频在线看 | 亚洲成人午夜在线 | 97av免费视频 | 欧美激情综合五月色丁香小说 | 黄网站色| 在线观看视频在线 | 国产成人高清在线 | 中文在线免费观看 | 九九综合久久 | 一级全黄毛片 | 亚洲人成人在线 | 亚洲成a人片在线www | 综合网婷婷 | 国产日韩精品一区二区在线观看播放 | 97超碰色| 久久国产精品成人免费浪潮 | 在线观看av大片 | 97国产电影 | a v在线视频 | 91av电影网 | 在线视频福利 | 夜夜躁狠狠躁日日躁视频黑人 | 欧美日韩国产一区二区三区 | 国产激情久久久 | 91黄视频在线观看 | 毛片网免费 | 国产精品第二页 | av黄色在线观看 | 日日爽 | 欧美在线1| 成人免费视频播放 | 亚洲3级 | 亚洲影视九九影院在线观看 | 97天堂网 | 久久久精品二区 | 久久久久久久久久电影 | 99视频免费| 一区二区三区国产精品 | 九九热免费观看 | 狠狠躁夜夜av | 亚洲精品高清一区二区三区四区 | 天天色综合久久 | 亚洲禁18久人片 | 亚洲美女视频在线 | 一级黄色片在线免费观看 | 日韩av福利在线 | 日韩精品一区二区三区三炮视频 | 免费看三级黄色片 | 日韩欧美高清在线 | 久久久免费看视频 | 国产精品免费视频久久久 | 久久激情小说 | 在线 视频 一区二区 | 欧美在线久久 | 中文字幕永久 | 在线观看成年人 | 蜜臀91丨九色丨蝌蚪老版 | 免费在线观看午夜视频 | 中文字幕免费播放 | 午夜私人影院久久久久 | 日韩欧美精品在线观看视频 | 免费亚洲成人 | 久草国产视频 | 婷婷伊人综合亚洲综合网 | 在线观看视频亚洲 | 四虎免费在线观看视频 | 国产成人精品久久二区二区 | 亚洲黄网站| 欧美日视频 | 日韩高清在线观看 | 九九热只有这里有精品 | 人人爽爽人人 | av成人动漫在线观看 | 色综合综合 | 91大神免费在线观看 | 91看片淫黄大片91 | 深爱激情综合 | 91视频88av| 亚洲第一中文网 | 国产免费资源 | 又色又爽又黄 | 人人cao| 亚洲最大成人免费网站 | 干狠狠| 看片网站黄 | a天堂中文在线 | 亚洲aⅴ免费在线观看 | 欧美日韩中文国产一区发布 | 国产淫片免费看 | 91精品国产91p65 | 91成人在线观看喷潮 | 久久精品网站免费观看 | 精品久久久久国产免费第一页 | 日本精品一区二区三区在线播放视频 | 久久成人国产精品入口 | 国产一级免费在线观看 | 一区二区三区日韩在线 | 成人精品一区二区三区中文字幕 | 九九视频一区 | 久久视频免费观看 | 国产精品完整版 | 久久久免费观看完整版 | 久久成年人网站 | 91黄色在线看 | 国产精品美女www爽爽爽视频 | 国产伦理久久精品久久久久_ | 亚洲视频在线看 | 久久综合色一综合色88 | 精品在线不卡 | 亚洲国产三级 | 午夜美女av| 99久久精品日本一区二区免费 | 久久国产露脸精品国产 | 日本在线观看视频一区 | 欧美久久99 | 日韩专区在线播放 | 成人黄色影片在线 | 日韩黄色免费 | 日韩毛片精品 | 日韩专区一区二区 | 国产精品1024| 麻豆小视频在线观看 | 一二三久久久 | 日日爱网址 | 成全在线视频免费观看 | 久青草视频 | 99久国产 | 欧美日韩视频在线观看一区二区 | 亚洲欧美精品一区二区 | 狠狠干激情| 日韩欧美99 | 高清av网站| 在线观看网站你懂的 | 99精品视频免费看 | 91在线免费公开视频 | 视频在线观看入口黄最新永久免费国产 | 国产日韩精品欧美 | 色国产在线 | 国产黄色片网站 | 激情丁香综合 | 91日韩免费| 在线免费观看成人 | 在线观看成人网 | av日韩在线网站 | 欧美精品乱码久久久久久按摩 | 99久久毛片| 天天撸夜夜操 | 99久免费精品视频在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 91精品高清| 精品一区二区在线观看 | 91久久人澡人人添人人爽欧美 | 日韩精品视频在线观看免费 | 欧美久久久一区二区三区 | 久久99网 | 成人免费91 | 久久精品免费播放 | 欧美一级电影片 | 色综合久久久久综合体桃花网 | 激情小说网站亚洲综合网 | 天天综合网国产 | 欧美91成人网 | 成人av在线直播 | 人人插人人爱 | 久久久久久久久久影视 | 中文字幕在线播放日韩 | 亚洲综合色丁香婷婷六月图片 | 国产99久久久国产精品成人免费 | 国产视频在线一区二区 | 久久久久国产一区二区三区 | 欧美成人aa | 国产精品一区二区在线 | av中文字幕在线观看网站 | 在线黄色毛片 | 狠狠操狠狠干天天操 | 日韩久久精品一区二区 | 不卡av免费在线观看 | 国产资源网 | 国产手机av| 四虎永久免费在线观看 | 黄色亚洲免费 | 日韩电影在线观看一区 | 国产精品粉嫩 | 日韩亚洲精品电影 | 99久久精品国产一区二区三区 | 91av在线视频免费观看 | 色综合久久中文字幕综合网 | 99热这里只有精品久久 | 精品国产精品国产偷麻豆 | 色在线免费视频 | 日韩高清在线一区二区 | www.狠狠操.com | 成人在线视频免费看 | 亚洲国产精品资源 | 久久人人爽人人片 | 中文字幕传媒 | 久久精品亚洲精品国产欧美 | 中文字幕一区二区三区乱码在线 | 国产精品久久久久久久久久白浆 | 免费观看福利视频 | 成人黄色小视频 | 久av在线 | 综合天天色 | 免费看片网页 | 国产中文字幕在线免费观看 | 国产黄色免费在线观看 | 超碰97av在线 | 午夜久久影视 | 奇米影视在线99精品 | 亚洲无在线 | 久久av网址 | 久草在线免费在线观看 | 在线精品视频免费播放 | 国产精品久久久久久一区二区 | 久久久久国产精品一区二区 | 久久99久久99免费视频 | 精品国产理论片 | 午夜视频在线观看一区 | 国产在线自 | 美女激情影院 | 国产精品久久视频 | 天天爱天天草 | a在线免费观看视频 | 国产剧情一区二区在线观看 | 丁香六月网 | 久久精品视频日本 | 免费在线观看成人av | 亚洲精品mv在线观看 | 亚洲国产剧情av | 天天操天天射天天爱 | 国产美女精品在线 | 69亚洲精品 | a亚洲视频 | 天天操夜夜逼 | 丁香花在线观看免费完整版视频 | 五月婷婷激情六月 | 激情视频免费在线观看 | www色综合 | 日日摸日日爽 | 91av在线国产 | 国产一在线精品一区在线观看 | 国产精品免费看久久久8精臀av | 天天艹天天| 国产综合婷婷 | 久久99国产视频 | 在线观看免费版高清版 | 99久久精 | 91精品少妇偷拍99 | 一本一道久久a久久精品 | 国产91精品在线观看 | 久久精品播放 | 黄色大片视频网站 | 亚洲三区在线 | 久久国产精品久久精品国产演员表 | 久久久一本精品99久久精品 | 成人网大片 | 中文字幕av在线电影 | 最新av在线网址 | 国产a级免费 | 黄色国产大片 | 成人福利av | 日日摸日日爽 | 久久精精品视频 | 在线观看视频一区二区三区 | 欧美aaa大片| 在线小视频你懂的 | 国产乱对白刺激视频在线观看女王 | 国产 在线观看 | 午夜av免费| 亚洲精品一区二区三区四区高清 | 国产精品免费久久久久久久久久中文 | 在线免费视 | 精品成人a区在线观看 | 在线免费看黄网站 | av黄色大片 | 欧美三级在线播放 | 精品在线视频一区二区三区 | 亚洲免费视频在线观看 | 国内精品小视频 | 一级性视频 | 欧美在线视频一区二区三区 | 欧美激情精品久久久久久免费印度 | 国内精品久久久久久中文字幕 | 91精品国自产在线偷拍蜜桃 | 欧美一级xxxx | 国产精品久久久一区二区 | 成人黄色电影在线 | 国产精品久久久久久模特 | 在线精品视频免费观看 | 中国老女人日b | 人人干人人干人人干 | 国产精品国产毛片 | 久久国产经典 | 国产成人一区三区 | 日韩精品久久久久久久电影竹菊 | 中文字幕传媒 | 国产精品九色 | 色片网站在线观看 | 狠狠色丁香婷婷综合 | 久久 在线 | 91精品视频免费看 | 国产91对白在线播 | 久久久久久久久久久电影 | 国产在线观看91 | 欧美日韩免费观看一区二区三区 | 国产黄色免费在线观看 | 国产系列 在线观看 | 中文字幕一区二区三区在线播放 | 婷婷色 亚洲 | 国产精品毛片一区视频播 | 在线精品在线 | av在线网站免费观看 | 国产精品一区二区三区在线播放 | 成人香蕉视频 | 91新人在线观看 | 久久视频免费在线观看 | 91精品视频在线 | 黄色大片免费播放 | 四虎www. | 视频二区在线视频 | 日韩婷婷| 久久综合给合久久狠狠色 | 欧美一级淫片videoshd | 国产高清中文字幕 | 丁香五月亚洲综合在线 | 国产精品一区二区白浆 | 婷婷在线网站 | 久久久久久高潮国产精品视 | 久久久网 | 91久久久久久国产精品 | 色综合天天干 | 久久99国产综合精品免费 | 久久人91精品久久久久久不卡 | 亚洲成人黄色 | 亚洲日本va在线观看 | 成人国产精品一区 | 伊人色综合久久天天 | 久久精品小视频 | 人人澡人摸人人添学生av | 波多野结衣在线观看视频 | 欧美一级免费高清 | 精品国产乱码久久久久久浪潮 | h动漫中文字幕 | 婷婷丁香色综合狠狠色 | 久久综合狠狠综合久久狠狠色综合 | 久久视频这里有精品 | 欧美性色综合网 | 黄色一级片视频 | 亚洲国产精久久久久久久 | 日本三级不卡 | 超碰公开在线 | 国产69精品久久99的直播节目 | 97成人在线免费视频 | 在线小视频 | 色在线高清 | 国产特级毛片aaaaaaa高清 | 91九色在线视频 | 91亚色免费视频 | 国产在线999 | 国产中文字幕久久 | 日韩最新av在线 | 久久精品999| av超碰免费在线 | 中文字幕影片免费在线观看 | 久操操 | 日韩av一区二区三区在线观看 | 国产在线一区二区三区播放 | 天天干夜夜干 | 天海翼一区二区三区免费 | 天天干天天摸 | 国产精品一区二区久久精品 | 美女网站视频久久 | 国产精彩视频一区 | 亚洲高清激情 | 激情综合网天天干 | 亚洲综合视频在线 | 欧美久久久久久久久久久久 | 麻豆传媒视频观看 | 免费美女av | 日韩精品不卡在线 | 高清av在线免费观看 | 国产亚洲欧美在线视频 | 亚洲视频网站在线观看 | 亚洲区另类春色综合小说 | av免费高清观看 | 超碰国产人人 | 91精品亚洲影视在线观看 | 91精品国产91久久久久久三级 | 亚洲永久免费av | 亚洲综合欧美日韩狠狠色 | 手机看片午夜 | 在线免费观看涩涩 | 一区二区三区视频网站 | 国产色爽| 91精品毛片| 欧美精品久久久久久久久久久 | 亚洲欧洲精品久久 | 婷婷综合 | 久久综合久久综合这里只有精品 | 色播五月激情综合网 | 国产精品久久99综合免费观看尤物 | 久久精品九色 | 天堂va在线高清一区 | 五月天狠狠操 | 天天干天天操天天拍 | 免费的国产精品 | 99热官网 | 一级成人在线 | 91精品国产91久久久久福利 | av在线8| 日韩av不卡在线播放 | 一级一级一片免费 | 久草观看视频 | 波多野结衣电影一区 | 天天操天天干天天摸 | 色婷婷亚洲| 美女视频黄免费的久久 | 九九热免费观看 | 国产免费一区二区三区最新 | 亚州天堂| 久久99精品国产 | 午夜精品久久久久久 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 九九精品视频在线观看 | 一区二区精品在线 | 欧美一级视频一区 | 国产人成在线视频 | 久久精品久久久久 | 亚洲男男gaygay无套 | 久久综合九色九九 | 99久久99久久精品 | 中文字幕在线日 | 成人在线免费观看网站 | 中文字幕在线一区二区三区 | 欧美日韩伦理一区 | 久久人人爽人人爽人人片av免费 | 国产黄网在线 | 91中文字幕永久在线 | 久久综合偷偷噜噜噜色 | 丁香五月亚洲综合在线 | 日韩高清精品免费观看 | 免费在线观看视频一区 | 欧美午夜寂寞影院 | 日韩免费高清在线观看 | www久久 | 色全色在线资源网 | 亚洲国产精品成人av | 国产精品成人av久久 | 91福利视频在线 | 欧美国产日韩在线视频 | 亚洲另类视频 | 国产高清亚洲 | 久久免费美女视频 | 精品高清美女精品国产区 | 97综合网| 91人人澡人人爽人人精品 | 欧美极品一区二区三区 | 国产破处在线播放 | 人人狠狠| 国产区在线看 | 色a在线观看 | 久久国产精品久久精品国产演员表 | 九九热免费视频在线观看 | 中文字幕在线专区 | 国产精品成久久久久 | 人人干人人上 | 超碰人人射 | 黄色录像av |