www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]#ifndef __USBEP1_H_#define __USBEP1_H_#include "usb.h"#include "usbhw.h"extern s8 sendBuffer[4]; //鼠標(biāo)數(shù)據(jù)發(fā)送緩沖區(qū)extern u8 mouse_connect; //鼠標(biāo)連接標(biāo)志void usb_ep1_in_process(void);void usb_ep1_o

#ifndef __USBEP1_H_

#define __USBEP1_H_

#include "usb.h"

#include "usbhw.h"

extern s8 sendBuffer[4]; //鼠標(biāo)數(shù)據(jù)發(fā)送緩沖區(qū)

extern u8 mouse_connect; //鼠標(biāo)連接標(biāo)志

void usb_ep1_in_process(void);

void usb_ep1_out_process(void);

#endif

#include "usbep1.h"

s8 sendBuffer[4]={0};//鼠標(biāo)數(shù)據(jù)發(fā)送緩沖區(qū)

u8 mouse_connect=0; //鼠標(biāo)連接標(biāo)志

//針對接收的,暫時用不到

u8 readBuffer[4]={0};

u8 readLength=0;

void usb_ep1_in_process(void)

{

mouse_connect=1;

USB_WriteEP(HID_EP_IN,(u8*)sendBuffer,sizeof(sendBuffer));

sendBuffer[0]=0;

sendBuffer[1]=0;

sendBuffer[2]=0;

sendBuffer[3]=0;

}

void usb_ep1_out_process(void)

{

readLength=USB_ReadEP(HID_EP_OUT,readBuffer);

usb_debug_printf("usb ep1 outrn");

}

#ifndef __USBDESC_H__

#define __USBDESC_H__

#include "usb.h"

#include "usbcfg.h"

#include "hid.h"

#define WBVAL(x) (x & 0xFF),((x >> 8) & 0xFF)

#define USB_DEVICE_DESC_SIZE (sizeof(USB_DEVICE_DESCRIPTOR))

#define USB_CONFIGUARTION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR))

#define USB_INTERFACE_DESC_SIZE (sizeof(USB_INTERFACE_DESCRIPTOR))

#define USB_ENDPOINT_DESC_SIZE (sizeof(USB_ENDPOINT_DESCRIPTOR))

#define HID_DESC_OFFSET 0x0012

#define HID_DESC_SIZE (sizeof(HID_DESCRIPTOR))

#define HID_REPORT_DESC_SIZE (sizeof(HID_ReportDescriptor))

extern const U8 USB_DeviceDescriptor[];

extern const U8 USB_ConfigDescriptor[];

extern const U8 USB_StringDescriptor[];

extern const U8 HID_ReportDescriptor[];

extern const U16 HID_ReportDescSize;

#endif

#include "usbdesc.h"

//usb標(biāo)準(zhǔn)設(shè)備描述符

const U8 USB_DeviceDescriptor[]={

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

USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType字段。設(shè)備描述符的編號為0x01

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

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

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

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

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

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

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

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

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

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

0x03, //iSerialNumber字段。設(shè)備的序列號字符串索引值。

0x01 //bNumConfigurations字段。該設(shè)備所具有的配置數(shù)。

};

//USB報告描述符的定義

const u8 HID_ReportDescriptor[]=

{

//每行開始的第一字節(jié)為該條目的前綴,前綴的格式為:

//D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分別對每個條目注釋。

//這是一個全局(bType為1)條目,選擇用途頁為普通桌面Generic Desktop Page(0x01)

//后面跟一字節(jié)數(shù)據(jù)(bSize為1),后面的字節(jié)數(shù)就不注釋了,

//自己根據(jù)bSize來判斷。

0x05,0x01,// USAGE_PAGE (Generic Desktop)

//這是一個局部(bType為2)條目,說明接下來的應(yīng)用集合用途用于鼠標(biāo)

0x09,0x02,// USAGE (Mouse)

//這是一個主條目(bType為0)條目,開集合,后面跟的數(shù)據(jù)0x01表示

//該集合是一個應(yīng)用集合。它的性質(zhì)在前面由用途頁和用途定義為

//普通桌面用的鼠標(biāo)。

0xa1,0x01,// COLLECTION (Application)

//這是一個局部條目。說明用途為指針集合

0x09,0x01,// USAGE (Pointer)

//這是一個主條目,開集合,后面跟的數(shù)據(jù)0x00表示該集合是一個

//物理集合,用途由前面的局部條目定義為指針集合。

0xa1,0x00,// COLLECTION (Physical)

//這是一個全局條目,選擇用途頁為按鍵(Button Page(0x09))

0x05,0x09,// USAGE_PAGE (Button)

//這是一個局部條目,說明用途的最小值為1。實際上是鼠標(biāo)左鍵。

0x19,0x01,// USAGE_MINIMUM (Button 1)

//這是一個局部條目,說明用途的最大值為3。實際上是鼠標(biāo)中鍵。

0x29,0x03,// USAGE_MAXIMUM (Button 3)

//這是一個全局條目,說明返回的數(shù)據(jù)的邏輯值(就是我們返回的數(shù)據(jù)域的值啦)

//最小為0。因為我們這里用Bit來表示一個數(shù)據(jù)域,因此最小為0,最大為1。

0x15,0x00,// LOGICAL_MINIMUM (0)

//這是一個全局條目,說明邏輯值最大為1。

0x25,0x01,// LOGICAL_MAXIMUM (1)

//這是一個全局條目,說明數(shù)據(jù)域的數(shù)量為三個。

0x95,0x03,// REPORT_COUNT (3)

//這是一個全局條目,說明每個數(shù)據(jù)域的長度為1個bit。

0x75,0x01,// REPORT_SIZE (1)

//這是一個主條目,說明有3個長度為1bit的數(shù)據(jù)域(數(shù)量和長度

//由前面的兩個全局條目所定義)用來做為輸入,

//屬性為:Data,Var,Abs。Data表示這些數(shù)據(jù)可以變動,Var表示

//這些數(shù)據(jù)域是獨立的,每個域表示一個意思。Abs表示絕對值。

//這樣定義的結(jié)果就是,第一個數(shù)據(jù)域bit0表示按鍵1(左鍵)是否按下,

//第二個數(shù)據(jù)域bit1表示按鍵2(右鍵)是否按下,第三個數(shù)據(jù)域bit2表示

//按鍵3(中鍵)是否按下。

0x81,0x02,// INPUT (Data,Var,Abs)

//這是一個全局條目,說明數(shù)據(jù)域數(shù)量為1個

0x95,0x01,// REPORT_COUNT (1)

//這是一個全局條目,說明每個數(shù)據(jù)域的長度為5bit。

0x75,0x05,// REPORT_SIZE (5)

//這是一個主條目,輸入用,由前面兩個全局條目可知,長度為5bit,

//數(shù)量為1個。它的屬性為常量(即返回的數(shù)據(jù)一直是0)。

//這個只是為了湊齊一個字節(jié)(前面用了3個bit)而填充的一些數(shù)據(jù)

//而已,所以它是沒有實際用途的。

0x81,0x03,// INPUT (Cnst,Var,Abs)

//這是一個全局條目,選擇用途頁為普通桌面Generic Desktop Page(0x01)

0x05,0x01,// USAGE_PAGE (Generic Desktop)

//這是一個局部條目,說明用途為X軸

0x09, 0x30, //

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

2025年8月13日 – 提供超豐富半導(dǎo)體和電子元器件?的業(yè)界知名新品引入 (NPI) 代理商貿(mào)澤電子 (Mouser Electronics) 即日起開售Asahi Kasei Microdevices (AKM) 的...

關(guān)鍵字: 數(shù)模轉(zhuǎn)換器 USB 無線揚聲器

物聯(lián)網(wǎng)與智能化設(shè)備快速普及,供電方式的選擇直接影響設(shè)備部署的靈活性、成本與可靠性。PoE(以太網(wǎng)供電)與USB供電作為兩大主流技術(shù),分別在工業(yè)網(wǎng)絡(luò)、智能家居、消費電子等領(lǐng)域占據(jù)關(guān)鍵地位。本文將從設(shè)備適配性、傳輸距離、功率...

關(guān)鍵字: PoE USB

在無線技術(shù)的發(fā)展歷程中,部署的簡便性往往是成功的關(guān)鍵。像Wi-Fi、藍(lán)牙和早期的蜂窩技術(shù),只有在集成變得簡單、無縫且實惠時,才能實現(xiàn)大規(guī)模的應(yīng)用。而如今,Wi-Fi HaLow——一種專為物聯(lián)網(wǎng)(IoT)設(shè)計的遠(yuǎn)距離、低...

關(guān)鍵字: 物聯(lián)網(wǎng) Wi-Fi USB

2025年8月5日 – 專注于引入新品的全球電子元器件和工業(yè)自動化產(chǎn)品授權(quán)代理商貿(mào)澤電子 (Mouser Electronics)即日起開售Microchip Technology的新款A(yù)VR? SD 8位MCU。AVR...

關(guān)鍵字: MCU 工業(yè)自動化 USB

隨著高解析度音頻應(yīng)用的不斷發(fā)展和廣泛部署,諸如USB與I2S之間等不同專業(yè)接口之間的高品質(zhì)音頻轉(zhuǎn)換需求日益增長,由此帶來了實現(xiàn)高性能、高實時性與高靈活性的新挑戰(zhàn)。為此,邊緣AI和智能音頻專家XMOS攜手其全球首家增值分銷...

關(guān)鍵字: SoC USB 處理器

【2025年7月24日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日推出新型英飛凌ID Key系列,進(jìn)一步擴(kuò)展其通用串行總線(USB)...

關(guān)鍵字: 控制器 USB 非易失性存儲器

其他電腦(比如安卓手機(jī)/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問一些東西。你可以使用android的USB OTG功能(是的,幾乎每個android都支持這個功能,你可以將鼠標(biāo)和鍵盤連接到它)。

關(guān)鍵字: USB 鼠標(biāo) Android 樹莓派

M5Stack Cardputer非常適合作為硬件密碼管理器。它很小巧,有一個內(nèi)置鍵盤,一個SD卡插槽,運行在帶有本地USB支持的ESP32-S3上。屏幕使其易于使用,并且由于USB HID,它可以直接在登錄字段中鍵入密...

關(guān)鍵字: 密碼管理器 M5Stack Cardputer USB

【2025年7月10日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)為CIS的新款USB 5 Gbit/s和10 Gbit/s攝像頭提供E...

關(guān)鍵字: 控制器 USB 圖像信號處理器

Holtek 針對USB應(yīng)用推出HT82B45R低速USB OTP MCU,符合USB 2.0低速規(guī)范,支持鍵盤用的高阻抗碳膜技術(shù)(Carbon Membrane)。HT82B45R結(jié)合低功耗設(shè)計、彈性I/O配置、內(nèi)建L...

關(guān)鍵字: MCU USB 看門狗定時器
關(guān)閉