在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32 HID例程生成不小于64字節(jié)傳輸?shù)囊浦策^程

            基于STM32 HID例程生成不小于64字節(jié)傳輸?shù)囊浦策^程

            作者: 時間:2016-09-07 來源:網(wǎng)絡(luò) 收藏

              前言

            本文引用地址:http://www.biyoush.com/article/201609/296661.htm

              本文簡單介紹如何應(yīng)用ST HID(MOUSE)例程生成一個可以輸入和輸出任何長度小于等于64字節(jié)的移植過程。

              問題描述:

              HID的在的運用中是非常廣泛的,但是很多應(yīng)用并不是簡單的鼠標或者鍵盤操作,而是客戶自定義的一些應(yīng)用,所以REPORT的定義往往跟鼠標或者鍵盤并不相同,因而客戶常?;赟T的HID的例程進行修改。那么如何基于我們的例程生成一個可以輸入輸出任何長度小于等于64字節(jié)的例程?這里示范一下,拋磚引玉。

              代碼修改:

              第一步:

              我們在usbd_hid_core.c中,找到配置描述進行修改。首先增加一個OUT 端點。同時將HID_IN_PACKET 和HID_OUT_PACKET長度修改為0x40。

              0x07, /* bLength: Endpoint Descriptorsize *///dum

              _ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType: */ /* Endpoint descriptor type */

              HID_OUT_EP, /* bEndpointAddress: */ /*Endpoint Address (OUT) */

              0x03, /* bmAttributes: Interruptendpoint */

              HID_OUT_PACKET, /* wMaxPacketSize: 64Bytes max */

              0x00,

              0x01, /* bInterval: Polling Interval(20 ms) */

              /* 41 */

              第二步:

              修改報告描述符:請注意這兩個report count 和report SIZE 的設(shè)定。

              const uint8_tHID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] =

              {

              0x05, 0x8C, /* USAGE_PAGE (VendorPage: 0xFF00) */

              0x09, 0x06, /* USAGE (Demo Kit) */

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

              /* 6 */

              0x09, 0x06, /* USAGE (LED 1) */

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

              0x26, 0x00,0xff, /* LOGICAL_MAXIMUM(1) */

              0x75, 0x08, /* REPORT_SIZE (8) */

              0x95, 0x40, /* REPORT_COUNT (64) */

              0x91, 0x82, /* OUTPUT(Data,Var,Abs,Vol) */

              /* 18 */

              0x09, 0x06, /* USAGE (ADC IN) */

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

              0x26, 0x00,0xff, /* LOGICAL_MAXIMUM(255) */

              0x75, 0x08, /* REPORT_SIZE (8) */

              0x95, 0X40, /* REPORT_COUNT (64) */

              0x81, 0x82, /* INPUT(Data,Var,Abs,Vol) */

              /* 31 */

              0xc0 /* END_COLLECTION */

              }; /* CustomHID_ReportDescriptor */

              第三步:

              修改HID CLASS 初始化代碼:

              注意這里兩個地方:

              1, USB FIFO的分配定義。

              2, Usb ENDPOINT的使能,以及準備接收數(shù)據(jù)。

              static uint8_t USBD_HID_Init (void*pdev,

              uint8_t cfgidx)

              {

              DCD_PMA_Config(pdev ,HID_IN_EP,USB_SNG_BUF,HID_IN_TX_ADDRESS);

              DCD_PMA_Config(pdev ,HID_OUT_EP,USB_SNG_BUF,HID_OUT_RX_ADDRESS);

              /* Open EP IN */

              DCD_EP_Open(pdev,

              HID_IN_EP,

              HID_IN_PACKET,

              USB_EP_INT);

              /* Open EP OUT */

              DCD_EP_Open(pdev,

              HID_OUT_EP,

              HID_OUT_PACKET,

              USB_EP_INT);

              DCD_EP_PrepareRx(pdev,HID_OUT_EP,Report_buf,HID_OUT_PACKET);

              PrevXferDone=1;

              return USBD_OK;

              }

              第四步:

              修改發(fā)送函數(shù),注意不能一直往USB FIFO里面填充數(shù)據(jù),一定要等上一次傳輸完成再填充。

              USBD_HID_SendReport(&USB_Device_dev, Send_Buffer,HID_IN_PACKET);

              最后我們一起來看看效果,可以清楚的看到MCU每毫秒都會發(fā)送64個字節(jié)的數(shù)據(jù)到主機。

              

             

              結(jié)論:

              這個例程只是基于F0系列的MCU進行的修改,你只要按照這四步很容易地移植到其它系列MCU上。



            關(guān)鍵詞: STM32 USB

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉