国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

這篇具有很好參考價值的文章主要介紹了stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近有個需求,需要同時用usb鍵盤鼠標(biāo)和虛擬串口等,因為平時沒怎么研究過usb協(xié)議,所以自己寫復(fù)合設(shè)備一直沒有成功,然后正巧在github上看到了一個stm32的一個usb復(fù)合設(shè)備庫,可以快速配置usb組合設(shè)備,并且支持超級多路串口

Gihub地址https://github.com/alambe94/I-CUBE-USBD-Composite

安裝

  1. 在githubr release頁面下載.pack文件,要是github打不開這里有分享鏈接庫文件
  2. CubeMX中選擇管理軟件包stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device
  3. 導(dǎo)入剛才下好的.pack文件stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

?啟用

選擇組件

stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

選擇你需要的

Core是必須的,然后你需要哪些功能就需要啟用,多設(shè)備一定要啟用COMPISITE

我這里選擇了鍵鼠和CDC虛擬串口,同時還得打開Core和COMPOSITE

?stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

?在這里也需要選擇你需要的

stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

?配置其他,晶振時鐘調(diào)試等等

stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

?stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

單獨生成外設(shè)文件

stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

可以生成工程了?

注意

MX_USB_DEVICE_Init();?
需要手動調(diào)用這個函數(shù)對USB進(jìn)行初始化

我試過默認(rèn)的鍵盤鼠標(biāo)的配置描述符好像不能適配我們的默認(rèn)的習(xí)慣,鍵盤8個字節(jié),鼠標(biāo)4個字節(jié)的,需要改變一下,我這里貼出我的

鍵盤 usbd_keyboard_hid.c

__ALIGN_BEGIN static uint8_t HID_KEYBOARD_ReportDesc[HID_KEYBOARD_REPORT_DESC_SIZE] __ALIGN_END =
    {
        //-------------鍵盤部分報告描述符----------------
        //表示用途頁為通用桌面設(shè)備
        0x05, 0x01, // USAGE_PAGE (Generic Desktop)
        0x09, 0x06, // USAGE (Keyboard)
        0xa1, 0x01, // COLLECTION (Application)
        0x05, 0x07, //   USAGE_PAGE (Keyboard)
        0x19, 0xe0, //   USAGE_MINIMUM (Keyboard LeftControl)
        0x29, 0xe7, //   USAGE_MAXIMUM (Keyboard Right GUI)
        0x15, 0x00, //   LOGICAL_MINIMUM (0)
        0x25, 0x01, //   LOGICAL_MAXIMUM (1)
        0x75, 0x01, //   REPORT_SIZE (1)
        0x95, 0x08, //   REPORT_COUNT (8)
        0x81, 0x02, //   INPUT (Data,Var,Abs)
        0x95, 0x01, //   REPORT_COUNT (1)
        0x75, 0x08, //   REPORT_SIZE (8)
        0x81, 0x03, //   INPUT (Cnst,Var,Abs)
        0x95, 0x05, //   REPORT_COUNT (5)
        0x75, 0x01, //   REPORT_SIZE (1)
        0x05, 0x08, //   USAGE_PAGE (LEDs)
        0x19, 0x01, //   USAGE_MINIMUM (Num Lock)
        0x29, 0x05, //   USAGE_MAXIMUM (Kana)
        0x91, 0x02, //   OUTPUT (Data,Var,Abs)
        0x95, 0x01, //   REPORT_COUNT (1)
        0x75, 0x03, //   REPORT_SIZE (3)
        0x91, 0x03, //   OUTPUT (Cnst,Var,Abs)
        0x95, 0x06, //   REPORT_COUNT (6)
        0x75, 0x08, //   REPORT_SIZE (8)
        0x15, 0x00, //   LOGICAL_MINIMUM (0)
        0x25, 0xFF, //   LOGICAL_MAXIMUM (255)
        0x05, 0x07, //   USAGE_PAGE (Keyboard)
        0x19, 0x00, //   USAGE_MINIMUM (Reserved (no event indicated))
        0x29, 0x65, //   USAGE_MAXIMUM (Keyboard Application)
        0x81, 0x00, //   INPUT (Data,Ary,Abs)
        0xc0};

?記得改數(shù)組長度為 63U

[特殊按鍵][ ][按鍵1][按鍵2][按鍵3][按鍵4][按鍵5][按鍵6]

鼠標(biāo) usbd_mouse_hid.c

__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
    {
         //-----------------------鼠標(biāo)部分報告描述符----------------------------  
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)  
    0x09, 0x02,                    // USAGE (Mouse)  
    0xa1, 0x01,                    // COLLECTION (Application)  
    0x09, 0x01,                    //   USAGE (Pointer)  
    0x05, 0x09,                    //     USAGE_PAGE (Button)  
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)  
    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)  
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)  
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)  
    0x95, 0x03,                    //     REPORT_COUNT (3)  
    0x75, 0x01,                    //     REPORT_SIZE (1)  
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)  
    0x95, 0x01,                    //     REPORT_COUNT (1)  
    0x75, 0x05,                    //     REPORT_SIZE (5)  
    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)  
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)  
    0x09, 0x30,                    //     USAGE (X)  
    0x09, 0x31,                    //     USAGE (Y)  
    0x09, 0x38,                    //     USAGE (Wheel)  
    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)  
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)  
    0x75, 0x08,                    //     REPORT_SIZE (8)  
    0x95, 0x03,                    //     REPORT_COUNT (3)  
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)  
    0xc0                          //   END_COLLECTION  
    };

長度49U

[按鍵][X][Y][滾輪]

?文章來源地址http://www.zghlxwxcb.cn/news/detail-483819.html

到了這里,關(guān)于stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • stm32 USB HID+CDC 鼠標(biāo)鍵盤串口 組合設(shè)備配置解析

    stm32 USB HID+CDC 鼠標(biāo)鍵盤串口 組合設(shè)備配置解析

    查閱網(wǎng)上的博客與代碼,很多都是關(guān)于USB的鼠標(biāo)配置、USB的鍵盤配置、USB的虛擬串口配置,稍微深入一點的會將鼠標(biāo)鍵盤合在一起,但移植起來就會報很多錯誤,要么是檢測不到,要么是警告,這很正常,因為不理解這些數(shù)字代表著什么。但只要理解每個數(shù)字代表什么意思,

    2024年02月13日
    瀏覽(56)
  • 第10課【STM32 USB通訊協(xié)議實戰(zhàn)】HID鍵盤+CDC虛擬串口組合設(shè)備

    第10課【STM32 USB通訊協(xié)議實戰(zhàn)】HID鍵盤+CDC虛擬串口組合設(shè)備

    文章中的部分概念可參考第9課【USB協(xié)議】USB總線 接口 端點 管道 數(shù)據(jù)包 枚舉 STM32_USB-FS-Device_Lib V4.1.0 USB協(xié)議中為了提供對多樣設(shè)備的支持,定義了許多外部設(shè)備子類,常見的包括: 人機(jī)交互類設(shè)備HID(Human Interface Device) 通信類設(shè)備CDC(Communicate Device Class) 大容量存儲設(shè)備

    2024年02月04日
    瀏覽(70)
  • STM32 CubeMX USB_MSC(存儲設(shè)備U盤)

    STM32 CubeMX USB_MSC(存儲設(shè)備U盤)

    STM32 CubeMX 配置USB將STM32設(shè)置可以作為存儲設(shè)備或者IAP升級功能 要注意:stm32f103c8t6內(nèi)部Flash的1頁為1024(1kb) 需要修改兩個部分:usbd_storage_if.c文件和user_diskio.c文件 新建一個TXT文檔:

    2024年02月08日
    瀏覽(22)
  • STM32CubeMX學(xué)習(xí)筆記(46)——USB接口使用(HID自定義設(shè)備)

    STM32CubeMX學(xué)習(xí)筆記(46)——USB接口使用(HID自定義設(shè)備)

    USB(Universal Serial BUS)通用串行總線 ,是一個外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。是應(yīng)用在 PC 領(lǐng)域的接口技術(shù)。USB 接口支持設(shè)備的即插即用和熱插拔功能。USB 是在 1994 年底由英特爾、康柏、IBM、Microsoft 等多家公司聯(lián)合提出的。 USB 發(fā)展到現(xiàn)在已經(jīng)有 US

    2024年02月14日
    瀏覽(35)
  • 【STM32開發(fā)小技巧】CUBEMX改變工程模板(FreeMarker一鍵生成定制文件)

    【STM32開發(fā)小技巧】CUBEMX改變工程模板(FreeMarker一鍵生成定制文件)

    ps:可直接跳到效果展示 眾所周知CUBEMX可以生成代碼,圖形界面可以方便用戶進(jìn)行STM32的配置,有天我就在想能否用戶改變生成后的代碼,于是就有了下面的文章。 直接進(jìn)入Project Manager頁面。 我們看一下官方的說明 生成了一些外設(shè)信息,這些都是通過FreeMarker模板引擎代碼生成

    2023年04月08日
    瀏覽(71)
  • STM32 USB CDC VPC

    STM32 USB CDC VPC

    STM32,STM32CubeMX,HAL庫,USB,虛擬串口,串口不定長接收 通過使用stm32cubemx,實現(xiàn)USB CDC虛擬串口,并與硬件串口進(jìn)行數(shù)據(jù)傳輸,實現(xiàn)了硬件串口數(shù)據(jù)的不定長接收,以及USB虛擬串口超過64字節(jié)的數(shù)據(jù)接收,最終實現(xiàn)了一個簡單的USB轉(zhuǎn)串口功能。 使用USB的CDC類來虛擬出一個串口與電腦進(jìn)

    2024年02月15日
    瀏覽(26)
  • 用STM32CubeMX配置輸出PWM信號控制多路舵機(jī)(HAL)

    用STM32CubeMX配置輸出PWM信號控制多路舵機(jī)(HAL)

    (1)編程平臺:Keil5 (2)CubeMX (1)本此使用最小核心板STM32F103C8T6為例 (2)一個舵機(jī):SG90或者M(jìn)G996等均可 (3)ST-link 下載器 (4)杜邦線若干 ????????舵機(jī)的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍內(nèi)的角度控制脈沖部分,總間隔為2ms。以180度角度

    2023年04月09日
    瀏覽(26)
  • 【STM32】STM32F4中USB的CDC虛擬串口(VCP)使用方法

    【STM32】STM32F4中USB的CDC虛擬串口(VCP)使用方法

    最近在學(xué)習(xí)STM32的USB功能,主要是想要使用虛擬串口(VCP)功能,來解決串口傳輸速率較低的問題,達(dá)到于上位機(jī)高效通信的目的。 使用芯片:STM32F407ZGT6 使用函數(shù):HAL庫 使用工具:STM32CubeMX + Keil uVision5 串口工具:VOFA 主要配置內(nèi)容: 調(diào)試模式為Serial; 使用外部時鐘 設(shè)置為

    2024年02月21日
    瀏覽(78)
  • STM32CubeMX一鍵升級

    STM32CubeMX一鍵升級

    使用STM32CubeMX過程中會遇到檢查版本更新可用卻無法打勾更新的情況 解決方案是: 1.桌面右鍵STM32CubeMX程序 2.選擇兼容性選項卡 3.勾上以管理員身份運行 問題解決

    2024年02月11日
    瀏覽(20)
  • STM32與USB3300共同實現(xiàn)USB OTG HS的CDC串口通信速度測試

    STM32與USB3300共同實現(xiàn)USB OTG HS的CDC串口通信速度測試

    ??STM32和上位機(jī)傳統(tǒng)通信方式就是串口,IIC,SPI等。IIC和SPI一般不常用,串口是用的最多的通信方式。然而串口一般用于輸出調(diào)試信息這種對傳輸速度沒要求的場景,那種大容量數(shù)據(jù)快速傳輸?shù)膱鼍?,串口顯得捉襟見肘。STM32自帶USB FS,然而既然都使用USB了,為什么不用US

    2024年02月07日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包