STM32设置USB HID模式

使用USBHID模式与电脑、手机终端通讯,速率和准确率比虚拟串口和CH340转接速度要快。

在USB_OTG_FS中,选择Device_Only,其它默认。

在Middleware中的Class For FS IP中,如下选择

在Device Descriptor中可以按需要填写

设置USB频率为48Mhz

在Project Manager里,修改Heap和Stack的大小

在程序里main.c中,加入头文件和引用

#include "usbd_custom_hid_if.h"

extern USBD_HandleTypeDef hUsbDeviceFS;  

在usbd_custom_hid_if.c中修改

/** 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 */
  0x05,0x8c, /* USAGE_PAGE (ST Page) */
	0x09,0x01, /* USAGE (Demo Kit) */
	0xa1,0x01, /* COLLECTION (Application) */

	// The Input report
	0x09,0x03, // USAGE ID - Vendor defined
	0x15,0x00, // LOGICAL_MINIMUM (0)
	0x26,0x00, 0xFF, // LOGICAL_MAXIMUM (255)
	0x75,0x08, // REPORT_SIZE (8bit)
	0x95,0x40, // REPORT_COUNT (64Byte)
	0x81,0x02, // INPUT (Data,Var,Abs)

	// The Output report
	0x09,0x04, // USAGE ID - Vendor defined
	0x15,0x00, // LOGICAL_MINIMUM (0)
	0x26,0x00,0xFF, // LOGICAL_MAXIMUM (255)
	0x75,0x08, // REPORT_SIZE (8bit)
	0x95,0x40, // REPORT_COUNT (64Byte)
	0x91,0x02, // OUTPUT (Data,Var,Abs)
  /* USER CODE END 0 */
  0xC0    /*     END_COLLECTION	             */
};

 USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, SendBuff, 64);    //发送函数,必须64字节

static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)  //在usbd_custom_hid_if.c中的接收函数

static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)
{
  /* USER CODE BEGIN 6 */
  UNUSED(event_idx);
  UNUSED(state);
uint8_t i,USB_Recive_Buffer[64];
	USBD_CUSTOM_HID_HandleTypeDef     *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);

	for(i=0;i<64;i++) 
	{
			USB_Recive_Buffer[i]=hhid->Report_buf[i];  //把接收到的数据送到自定义的缓存区保存(Report_buf[i]为USB的接收缓存区)			
	} 
  /* Start next USB packet transfer once data processing is completed */
  USBD_CUSTOM_HID_ReceivePacket(&hUsbDeviceFS);
  return (USBD_OK);
  /* USER CODE END 6 */
}

使用USB调试助手

 先查找USB,在下拉框中找到STM设备,便可进行通讯了。

以下是示例代码

STM32F407代码

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值