STM32F429阿波罗用Cubemx建一个USBHID工程,实现数据收发

最近想做一个USBHID数据收发,查找了很多文章,其中两篇文章作者写的很详细,值得参考
https://www.cnblogs.com/xingboy/p/9913963.html
https://blog.csdn.net/guanlizhongxintishi/article/details/87882207

1.配置时钟树

选择外部时钟源
在这里插入图片描述
外部晶振为25M,设置M,N,P,Q,使USB时钟必须是48M
在这里插入图片描述

2.设置USB

中断会自动勾选,不用管
在这里插入图片描述
配置USB,选择Custom Human Interface Device Class,之前选择了Human Interface Device Class,设备变成了鼠标模式
在这里插入图片描述CUSTOM_HID_FS_BINTERVAL,这个是指数据传输的最小时间间隔(ms)这里修改为跟下面USB传输部分中修改时间间隔一致 USBD_CUSTOM_HID_REPORT_DESC_SIZE 这个是指报告描述符所用的字节数为34(默认为2);USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 表示输入输出端点一次传输数据大小最大为64个字节(默认为2)

3.生成工程

生成代码的时候注意把堆的大小改大一点,不然容易出现设备识别出来出现感叹号的情况
在这里插入图片描述

4.工程代码修改

生成工程先编译一下,
usbd_customhid.h文件中修改发送与接收长度为64
#define CUSTOM_HID_EPIN_SIZE 0x40
#define CUSTOM_HID_EPOUT_SIZE 0x40
  
usbd_custom_hid_if.c 文件里,找到 CUSTOM_HID_ReportDesc_FS 函数,
添加报文文件代码如下:

/** Usb HID report descriptor. */
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
   
   
  /* USER CODE BEGIN 0 */
    0x06, 0x00, 0xff,              // USAGE_PAGE (Vendor Defined Page 1)
    0x09, 0x01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值