當(dāng)前位置:首頁 > 單片機 > 單片機
[導(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)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉