基于STM32的USB键盘制作(保姆级)(一)

这篇具有很好参考价值的文章主要介绍了基于STM32的USB键盘制作(保姆级)(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录 第一节  USB协议及建立USB-HID工程

第二节  配置描述符及HID报文格式

第三节  PCB按键映射(基于稚晖君开源)


 文章来源地址https://www.toymoban.com/news/detail-605334.html

文章目录

前言

一、USB协议

二、新建一个USB-HID工程

1.时钟及GPIO配置

2.USB库的配置及部分参数分析

总结

 


前言

此系列主要讲利用cubemx配置USB-HID协议,实现USB键盘,以及稚晖君键盘映射代码分析。


 

一、USB协议

具体讲解参考这位大佬:USB具体通讯过程(含枚举过程)_go_str的博客-CSDN博客

了解需要枚举的相关报文即可

 在创建USB工程中,我们主要设置设备描述符、配置描述符、报文描述符。下文讲解。

二、cubemx新建USB工程

 注:笔者使用的基于正点原子STM32MINI开发板实现,型号选择的为STM32F103RCT6。不同型号配置过程都类似。

1.时钟配置

 选择外部晶振时钟键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

调试模式配置,SWD下载选择Serial Wire,JTAG下载选择4或5脚。这里笔者使用的正点原子开发板使用的是JTAG-5Pin。 注:这里有个值得注意的地方,若选择No Debug模式,则生成后的工程是默认关闭JTAG和SWD下载的,故之后将工程的HEX文件烧录进芯片后,因为程序中有执行关闭SWD及JTAG的函数操作,下一次是只能用串口下载(这里不了解的话会以为是DAP或者ST-Link坏了)。之后用串口下载一份打开了JTAG或SWD的HEX文件即可恢复正常。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

 

2.USB的配置

勾选即可,其他保持默认

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

 

选择CustomHID,其他参数全部默认,之后程序中修改,含义下文有讲解。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

下面的参数解析:

USBD_CUSTOM_HID_REPORT_DESC_SIZE :报文描述符的大小(范围2-255)

USBD_CUSTOMHID_OUTREPORT_BUF_SIZE:输出报文缓冲区大小(范围:2-64)

 

圈中的是设置VID、PID标识。即:设备描述符内信息包括端点0的最大包长度,设备所支持的配置(Configuration)个数,设备类型,VID(Vendor ID,由USB-IF分配), PID(Product ID,由厂商自己定制)等信息。全部默认即可,修改了也不会对程序有影响。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

注:这里USB的时钟必须为48MHZ

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

中断不需要配置

 键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

这里因为用的开发板,故使用的一个按键来表示键盘,即PC5对应的IO口,还配置了一个LED灯(可不用)。(原理都相同,按键个数后续更改几行程序即可修改)

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

因为USB的库文件使用了malloc函数在堆空间申请内存,故这里堆大小要设置一下。具体设置多大笔者也不太清除,我这里设置的0x600,目前未出现BUG。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

 一定要勾选生成单独的C和H文件,后续好找到对应的修改。编译生成工程即可。

 键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

三.烧录下载及一些坑点

  生成后的工程,直接编译下载到单片机上,连接上电脑。因为正点原子开发板自带有USB接口,故使用数据线连接即可。

下图为正点原子STM32MINI开发板的原理图,可以看到这里的D+引脚(对应单片机的PA12)是必须要有一个1.5K欧电阻上拉的,否则电脑检测不到,如果是自己制板需要注意 。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

烧录进工程代码后,使用这里连接上电脑。

 键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

打开设备管理器,可以看见有USB设备的输入,但是有一个感叹号,双击它计算机会提示,存在未知报文符。是因为现在还没有配置相关报文以及设备的描述。配置讲在下一篇文章讲解。

键盘stm32,基于SMT32的USB键盘制作(附稚晖君键盘方案分析),python,pandas

 


 

总结

本文主要介绍了USB-HID工程的新建及USB口连接需要注意的地方

 

 

 

 

到了这里,关于基于STM32的USB键盘制作(保姆级)(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教你STM32做USB鼠标、键盘

    使用CubeMX软件傻瓜式的配置,一键生成USB的HID驱动。 ①、选择相对应的芯片  ②、配置时钟和Debug和debug      ③、配置USB    ④、生成代码          最好把这个也勾上,勾上以后每个外设配置不再都给你塞到main.c里,而是建一个.c.h,这样感觉舒服多了         USB协议

    2024年01月23日
    浏览(41)
  • STM32 CubeMX USB_(HID 鼠标和键盘)

    STM32 CubeMX 自动生成的USB_HID是鼠标类型的:键盘类型要做一点小修改; 参考: STM32CubeMX学习笔记 USB鼠标HID描述符以及数据格式

    2024年02月14日
    浏览(35)
  • STM32。USB HID,如何发送标准键盘的按键报告?

    我们要求STM32芯片的usb和windows电脑的USB接口进行连接,然后STM32芯片发送usb数据给windows电脑,实现电脑上按下一个f按键的效果。 下面开始操作: 使用STM32CubeMX生成代码,先选择对应的usb口 然后选择第三方软件,选择HID 然后点击生成代码,这时候就会生成usbd_hid.c相关的代码

    2024年02月12日
    浏览(46)
  • stm32 USB HID+CDC 鼠标键盘串口 组合设备配置解析

    查阅网上的博客与代码,很多都是关于USB的鼠标配置、USB的键盘配置、USB的虚拟串口配置,稍微深入一点的会将鼠标键盘合在一起,但移植起来就会报很多错误,要么是检测不到,要么是警告,这很正常,因为不理解这些数字代表着什么。但只要理解每个数字代表什么意思,

    2024年02月13日
    浏览(41)
  • 第10课【STM32 USB通讯协议实战】HID键盘+CDC虚拟串口组合设备

    文章中的部分概念可参考第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0 USB协议中为了提供对多样设备的支持,定义了许多外部设备子类,常见的包括: 人机交互类设备HID(Human Interface Device) 通信类设备CDC(Communicate Device Class) 大容量存储设备

    2024年02月04日
    浏览(59)
  • STM32CubeMX教程31 USB_DEVICE - HID外设_模拟键盘或鼠标

    正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 野火DAP仿真器 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 USB_OTG_FS为工作在Human Interface Device Class (HID)(人机接口设备类)模式下的USB_DEVICE(USB从机),利用上下左右四

    2024年02月19日
    浏览(40)
  • 【正点原子STM32连载】 第六十章 USB鼠标键盘(Host)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-336836-1-1.html 4)对正点原子STM32感兴趣的同学可以加群讨论:879133275 本章我们介绍如何使用STM32H750的USB HOST来驱动USB鼠

    2024年02月09日
    浏览(46)
  • 基于STM32讲USB

    USB接口是我们日常生活中最常见到的一种接口了,在电脑,手机,键盘,鼠标上都会见到。现常用的是 USB2.0 和 USB3.0 规格的。 VCC(一般+5V)、GND、D+、D-。而D+、D-是两个数据线,学过模电的我们都知道差分电路的好处是可以抑制共模信号也就是抑制干扰,以保证信号传输的质量

    2024年02月16日
    浏览(44)
  • stm32 USB复合设备 cubeMX库一键生成 多路CDC串口 HID鼠标键盘 Composite Device

    最近有个需求,需要同时用usb键盘鼠标和虚拟串口等,因为平时没怎么研究过usb协议,所以自己写复合设备一直没有成功,然后正巧在github上看到了一个stm32的一个usb复合设备库,可以快速配置usb组合设备,并且支持超级多路串口 Gihub地址 https://github.com/alambe94/I-CUBE-USBD-Compo

    2024年02月09日
    浏览(63)
  • STM32学习笔记-SMT32使用HAL库UART中断方式使用

    目录 1、引言 2、配置 3、流程 近来需要使用蓝牙模块,再了解到蓝牙模块等无线模块许多使用串口透传,便决定在研究一下串口UART 的使用方法。 由于用的板子种类每次都不一样,有F103 有G0 有G4 还有公司的8位自研芯片,所以每次用起来都需要重头开始复习 每次使用UART的目

    2023年04月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包