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

教你STM32做USB鼠標(biāo)、鍵盤(pán)

這篇具有很好參考價(jià)值的文章主要介紹了教你STM32做USB鼠標(biāo)、鍵盤(pán)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用CubeMX軟件傻瓜式的配置,一鍵生成USB的HID驅(qū)動(dòng)。

一、USB鼠標(biāo)

1、CubeMX配置

①、選擇相對(duì)應(yīng)的芯片

stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?②、配置時(shí)鐘和Debug和debug

stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?③、配置USB

stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?④、生成代碼

stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

?????????最好把這個(gè)也勾上,勾上以后每個(gè)外設(shè)配置不再都給你塞到main.c里,而是建一個(gè).c.h,這樣感覺(jué)舒服多了

stm32模擬鍵盤(pán),# STM32,stm32,單片機(jī),arm

2、編寫(xiě)應(yīng)用層代碼

????????USB協(xié)議還是挺復(fù)雜的,原理和底層我也搞不清楚,這東西也不是看幾篇文章學(xué)個(gè)一兩天就能搞明白的,我寫(xiě)這個(gè)也主要是為了好玩,沒(méi)有深層去理解。

我們用的鼠標(biāo)主要就四個(gè)屬性:鍵位(左鍵、右鍵、中鍵),左右移動(dòng)、上下移動(dòng)、滑輪

這四個(gè)屬性用一個(gè)長(zhǎng)度為4的數(shù)組一并包含進(jìn)來(lái):

? /*
? ? *MouseData[0]:低0位:左鍵 低1位:右鍵 低2位:中鍵
? ? *MouseData[1]:1~127:右 ?--127~-1:左
? ? *MouseData[2]:1~127:下 ?--127~-1:上
? ? *MouseData[3]:1~127:上 ?--127~-1:下 ?(滑輪)
? */
? char MouseData[4] = {0, 0, 0, 0};

發(fā)送這些信息用這個(gè)函數(shù):

USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t*)&MouseData,sizeof(MouseData));

主要代碼:

    memcpy(MouseDataT, MouseData, sizeof(MouseData));
? ? key = KEY_Scan(1); ? //支持連續(xù)按下
? ? switch(key)
? ? {
? ? ? case KEY0_PRES:
? ? ? ? MouseData[0] |= 0x01;
? ? ? ? break;
? ? ? case KEY1_PRES:
? ? ? ? MouseData[1] = 21;
? ? ? ? break;
? ? ? case WKUP_PRES:
? ? ? ? MouseData[3] = -12;
? ? ? ? break;
? ? ? default:
? ? ? ? MouseData[0] = 0;
? ? ? ? MouseData[1] = 0;
? ? ? ? MouseData[2] = 0;
? ? ? ? MouseData[3] = 0;
? ? }
? ? //如果有變化,發(fā)送
if(MouseData[0]!=MouseDataT[0]||MouseData[1]!=MouseDataT[1]||MouseData[2]!=MouseDataT[2]||MouseData[3]!=MouseDataT[3])
? ? {
? ? ? USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t*)&MouseData,sizeof(MouseData));
? ? }

二、USB鍵盤(pán)

1、CubeMX配置同鼠標(biāo),這里不啰嗦了

2、在mouse的基礎(chǔ)上修改為keyboard的

參考:基于STM32CUBE的USB鍵盤(pán)例程 | MCU起航 (mcublog.cn)

主要就是以下幾點(diǎn):

①、鼠標(biāo)描述符換成鍵盤(pán)描述符,描述符大小也要改變

②、接口協(xié)議

③、端點(diǎn)發(fā)送的數(shù)據(jù)包長(zhǎng)度

④、增加一個(gè)輸出端點(diǎn)描述符 (按我的理解是,可以返回鍵盤(pán)指示燈的狀態(tài)的,嘗試了很久,還是不知道怎么返回,

3、應(yīng)用程序

/*
? ? *keyBoardData[0]:特殊鍵
? ? *keyBoardData[1]:預(yù)留
? ? 普通按鍵可以一起按下 ?4:a
? ? *keyBoardData[2]:
? ? *keyBoardData[3]:
? ? *keyBoardData[4]:
? ? *keyBoardData[5]:
? ? *keyBoardData[6]:
? ? *keyBoardData[7]:
? */
u8 keyBoardData[8] = {0,0,0,0,0,0,0,0};
extern USBD_HandleTypeDef hUsbDeviceFS;
static void keyboard_key_test()
{
? ? u8 keyBoardDataEmpty[8] = {0,0,0,0,0,0,0,0};
? ? u8 key = KEY_Scan(1); ? //支持連續(xù)按下
? ? switch(key)
? ? {
? ? ? case KEY0_PRES:
? ? ? ? keyBoardData[2] = 4;
? ? ? ? 
? ? ? ? break;
? ? ? case KEY1_PRES:
? ? ? ? keyBoardData[2] = 5;
? ? ? ? break;
? ? ? case WKUP_PRES:
? ? ? ? keyBoardData[2] = 6;
? ? ? ? break;
? ? ? default:
? ? ? ? keyBoardData[2] = 0;
? ? }
? ? USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t*)&keyBoardData,sizeof(keyBoardData));
? ? HAL_Delay(15);
? ? USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t*)&keyBoardDataEmpty,sizeof(keyBoardDataEmpty));
? ? HAL_Delay(15);
}

三、程序代碼

代碼我已上傳

期待有伙伴能解決我的疑惑

mouse DEMO:(60條消息) stm32USB鼠標(biāo)demo-單片機(jī)文檔類(lèi)資源-CSDN文庫(kù)

keyboard DEMO:(60條消息) stm32USB鍵盤(pán)demo-嵌入式文檔類(lèi)資源-CSDN文庫(kù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-819340.html

到了這里,關(guān)于教你STM32做USB鼠標(biāo)、鍵盤(pán)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • STM32單片機(jī)4*4矩陣鍵盤(pán)相關(guān)代碼

    STM32單片機(jī)4*4矩陣鍵盤(pán)相關(guān)代碼

    ? ? ? ?矩陣鍵盤(pán)是我們學(xué)習(xí)32單片機(jī)中十分常見(jiàn)的模塊。對(duì)于我們掌握32單片機(jī)的基本要求有很大的幫助。其核心原理是利用鍵盤(pán)按鍵按下時(shí)產(chǎn)生的電位變化來(lái)判斷是否按下以及利用行列電平變化來(lái)得到按鍵在矩陣鍵盤(pán)位置的思路。本文簡(jiǎn)述其使用的相關(guān)代碼。 ? ??????

    2024年02月07日
    瀏覽(29)
  • stm32 USB復(fù)合設(shè)備 cubeMX庫(kù)一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤(pán) Composite Device

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

    最近有個(gè)需求,需要同時(shí)用usb鍵盤(pán)鼠標(biāo)和虛擬串口等,因?yàn)槠綍r(shí)沒(méi)怎么研究過(guò)usb協(xié)議,所以自己寫(xiě)復(fù)合設(shè)備一直沒(méi)有成功,然后正巧在github上看到了一個(gè)stm32的一個(gè)usb復(fù)合設(shè)備庫(kù),可以快速配置usb組合設(shè)備,并且支持超級(jí)多路串口 Gihub地址 https://github.com/alambe94/I-CUBE-USBD-Compo

    2024年02月09日
    瀏覽(34)
  • 【正點(diǎn)原子STM32連載】 第六十章 USB鼠標(biāo)鍵盤(pán)(Host)實(shí)驗(yàn) 摘自【正點(diǎn)原子】MiniPro STM32H750 開(kāi)發(fā)指南_V1.1

    【正點(diǎn)原子STM32連載】 第六十章 USB鼠標(biāo)鍵盤(pán)(Host)實(shí)驗(yàn) 摘自【正點(diǎn)原子】MiniPro STM32H750 開(kāi)發(fā)指南_V1.1

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子MiniPro H750開(kāi)發(fā)板 2)平臺(tái)購(gòu)買(mǎi)地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址:http://www.openedv.com/thread-336836-1-1.html 4)對(duì)正點(diǎn)原子STM32感興趣的同學(xué)可以加群討論:879133275 本章我們介紹如何使用STM32H750的USB HOST來(lái)驅(qū)動(dòng)USB鼠

    2024年02月09日
    瀏覽(20)
  • STM32單片機(jī)初學(xué)4-IIC通信(軟件模擬)

    STM32單片機(jī)初學(xué)4-IIC通信(軟件模擬)

    IIC ( Inter-Integrated Circuit )又稱(chēng)I2C(習(xí)慣讀“I方C”),是 IIC Bus簡(jiǎn)稱(chēng),中文名為 集成電路總線(xiàn) ,它是一種串行通信總線(xiàn),使用多主從架構(gòu),由飛利浦公司在1980年代為了讓主板、嵌入式系統(tǒng)或手機(jī)用以連接低速周邊設(shè)備而發(fā)展。適用于IC間的短距離數(shù)據(jù)傳輸。 最初的IIC通信速

    2024年02月05日
    瀏覽(102)
  • stm32單片機(jī)/51單片機(jī)蜂鳴器不響(proteus模擬)

    stm32單片機(jī)/51單片機(jī)蜂鳴器不響(proteus模擬)

    1提高蜂鳴器電阻,這樣根據(jù)分壓原理,可以提升蜂鳴器2段電壓 2更改蜂鳴器的工作電壓為更小的值,這個(gè)可以通過(guò)在proteus內(nèi)設(shè)置探針查看電壓值,更改為其值就可以了 我覺(jué)得如果不是仿真的話(huà),蜂鳴器額定電壓是不能改的,如果電壓不夠的話(huà)好像就只能夠選用合適的三極管

    2024年02月11日
    瀏覽(20)
  • STM32F407ZGT6單片機(jī)連接ST_LINK和USB轉(zhuǎn)TTL的接線(xiàn)方法+舵機(jī)接線(xiàn)方法

    STM32F407ZGT6單片機(jī)連接ST_LINK和USB轉(zhuǎn)TTL的接線(xiàn)方法+舵機(jī)接線(xiàn)方法

    目錄 1.STM32F407ZG單片機(jī)連接ST_LINK 2.STM32F407ZG單片機(jī)連接USB轉(zhuǎn)TTL(用于串口通信) 3? 舵機(jī) 單片機(jī)? ? ? ? ? ? ?ST_LINK ? ? ?9--------------------6 ? ? ?7--------------------2 ? ? ?20------------------3/4 ? ? ?1--------------------7/8 ?這里附上具體的接線(xiàn)圖片: 單片機(jī)? ? ? USB轉(zhuǎn)TTL TX————

    2024年02月02日
    瀏覽(75)
  • 手把手教你使用--常用模塊--HC05藍(lán)牙模塊,無(wú)線(xiàn)藍(lán)牙串口透?jìng)髂K,(實(shí)例:手機(jī)藍(lán)牙控制STM32單片機(jī)點(diǎn)亮LED燈)

    手把手教你使用--常用模塊--HC05藍(lán)牙模塊,無(wú)線(xiàn)藍(lán)牙串口透?jìng)髂K,(實(shí)例:手機(jī)藍(lán)牙控制STM32單片機(jī)點(diǎn)亮LED燈)

    最近在學(xué)STM32,基本的學(xué)完了,想學(xué)幾個(gè)模塊來(lái)鞏固一下知識(shí),就想到了藍(lán)牙模塊。玩啥好難過(guò)有很多博客教怎么連的,但自己看起來(lái)還是有點(diǎn)糊涂。模塊的原理和知識(shí)點(diǎn)我就不講解了,這里我主要 手把手 記錄一下我是如何對(duì)藍(lán)牙模塊進(jìn)行學(xué)習(xí)和使用的。 所使用的資料和工

    2024年02月02日
    瀏覽(115)
  • 基于STM32的USB鍵盤(pán)

    基于STM32的USB鍵盤(pán)

    1、選擇相應(yīng)芯片(本文使用STM32F070F6P6) 2、RCC時(shí)鐘配置和Debug設(shè)置 注:這里的PA9/10要重映射為PA11/12供USB接口使用(大部分芯片是分開(kāi)的不用設(shè)置) 3、配置USB 注:這里的PID和VID默認(rèn)就可以了(多設(shè)備時(shí)可以更改) 4、時(shí)鐘配置 ①、修改USBD_HID_CfgFSDesc參數(shù) 首先長(zhǎng)度,跳轉(zhuǎn)至定義修改為

    2024年02月03日
    瀏覽(18)
  • 基于STM32的USB鍵盤(pán)制作(保姆級(jí))(二)

    基于STM32的USB鍵盤(pán)制作(保姆級(jí))(二)

    ? 文章目錄 系列文章目錄 前言 一、配置函數(shù)定位的匯總 二、具體配置 1.設(shè)備配置報(bào)文的修改 2.鍵盤(pán)報(bào)文描述修改 3.鍵盤(pán)報(bào)文數(shù)據(jù)發(fā)送及實(shí)現(xiàn) 4.值得注意的幾點(diǎn) 5.附錄 總結(jié) ? 本文主要在上一節(jié)的基礎(chǔ)上,對(duì)相關(guān)的設(shè)備以及報(bào)文描述符配置,實(shí)現(xiàn)USB鍵盤(pán)。 ? 這里只是匯總各個(gè)

    2024年02月09日
    瀏覽(21)
  • 基于STM32的USB鍵盤(pán)制作(保姆級(jí))(一)

    基于STM32的USB鍵盤(pán)制作(保姆級(jí))(一)

    ? 文章目錄 前言 一、USB協(xié)議 二、新建一個(gè)USB-HID工程 1.時(shí)鐘及GPIO配置 2.USB庫(kù)的配置及部分參數(shù)分析 總結(jié) ? 此系列主要講利用cubemx配置USB-HID協(xié)議,實(shí)現(xiàn)USB鍵盤(pán),以及稚暉君鍵盤(pán)映射代碼分析。 ? 具體講解參考這位大佬:USB具體通訊過(guò)程(含枚舉過(guò)程)_go_str的博客-CSDN博客

    2024年02月16日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包