系列文章目录 第一节 USB协议及建立USB-HID工程
第二节 配置描述符及HID报文格式
第三节 PCB按键映射(基于稚晖君开源)
文章来源地址https://www.toymoban.com/news/detail-605334.html
文章目录
前言
一、USB协议
二、新建一个USB-HID工程
1.时钟及GPIO配置
2.USB库的配置及部分参数分析
总结
文章来源:https://www.toymoban.com/news/detail-605334.html
前言
此系列主要讲利用cubemx配置USB-HID协议,实现USB键盘,以及稚晖君键盘映射代码分析。
一、USB协议
具体讲解参考这位大佬:USB具体通讯过程(含枚举过程)_go_str的博客-CSDN博客
了解需要枚举的相关报文即可
在创建USB工程中,我们主要设置设备描述符、配置描述符、报文描述符。下文讲解。
二、cubemx新建USB工程
注:笔者使用的基于正点原子STM32MINI开发板实现,型号选择的为STM32F103RCT6。不同型号配置过程都类似。
1.时钟配置
选择外部晶振时钟
调试模式配置,SWD下载选择Serial Wire,JTAG下载选择4或5脚。这里笔者使用的正点原子开发板使用的是JTAG-5Pin。 注:这里有个值得注意的地方,若选择No Debug模式,则生成后的工程是默认关闭JTAG和SWD下载的,故之后将工程的HEX文件烧录进芯片后,因为程序中有执行关闭SWD及JTAG的函数操作,下一次是只能用串口下载(这里不了解的话会以为是DAP或者ST-Link坏了)。之后用串口下载一份打开了JTAG或SWD的HEX文件即可恢复正常。
2.USB的配置
勾选即可,其他保持默认
选择CustomHID,其他参数全部默认,之后程序中修改,含义下文有讲解。
下面的参数解析:
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,由厂商自己定制)等信息。全部默认即可,修改了也不会对程序有影响。
注:这里USB的时钟必须为48MHZ
中断不需要配置
这里因为用的开发板,故使用的一个按键来表示键盘,即PC5对应的IO口,还配置了一个LED灯(可不用)。(原理都相同,按键个数后续更改几行程序即可修改)
因为USB的库文件使用了malloc函数在堆空间申请内存,故这里堆大小要设置一下。具体设置多大笔者也不太清除,我这里设置的0x600,目前未出现BUG。
一定要勾选生成单独的C和H文件,后续好找到对应的修改。编译生成工程即可。
三.烧录下载及一些坑点
生成后的工程,直接编译下载到单片机上,连接上电脑。因为正点原子开发板自带有USB接口,故使用数据线连接即可。
下图为正点原子STM32MINI开发板的原理图,可以看到这里的D+引脚(对应单片机的PA12)是必须要有一个1.5K欧电阻上拉的,否则电脑检测不到,如果是自己制板需要注意 。
烧录进工程代码后,使用这里连接上电脑。
打开设备管理器,可以看见有USB设备的输入,但是有一个感叹号,双击它计算机会提示,存在未知报文符。是因为现在还没有配置相关报文以及设备的描述。配置讲在下一篇文章讲解。
总结
本文主要介绍了USB-HID工程的新建及USB口连接需要注意的地方
到了这里,关于基于STM32的USB键盘制作(保姆级)(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!