一、开发环境
硬件平台:stm32f767
软件平台:keil5,cubmx

二、cubemx创建工程
1、配置RCC

2、USB_OTG_FS,选择Device_Only模式

3、Middleware——USB_DEVICE

4、配置一个外部中断按键作为输入
5、配置时钟与生成代码

三、工程代码修改
1、打开usbd_custom_hid_if.c 文件,把CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] 数组中的描述符修改为

__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{/* USER CODE BEGIN 0 */0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)0x09, 0x00,                    // USAGE (Undefined)0xa1, 0x01,                    // COLLECTION (Application)0x09, 0x00,                    //   USAGE (Undefined)0x15, 0x00,                    //   LOGICAL_MINIMUM (0)0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)0x95, 0x01,                    //   REPORT_COUNT (1)0x75, 0x08,                    //   REPORT_SIZE (8)0x81, 0x00,                    //   INPUT (Data,Ary,Abs)0x09, 0x00,                    //   USAGE (Undefined)0x15, 0x00,                    //   LOGICAL_MINIMUM (0)0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)0x91, 0x00,                    //   OUTPUT (Data,Ary,Abs)/* USER CODE END 0 */0xC0    /*     END_COLLECTION              */
};

修改宏USBD_CUSTOM_HID_REPORT_DESC_SIZE的长度为29

2、打开此函数的注释

int8_t USBD_CUSTOM_HID_SendReport_FS(uint8_t *report, uint16_t len)
{return USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, report, len);
}

3、在按键中断中发送字符

uint8_t send_data = 1;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin == KEY0_Pin){USBD_CUSTOM_HID_SendReport_FS(&send_data, 1);}
}

4、完整工程代码
https://download.csdn.net/download/huhuandk/11980721

stm32——自定义HID设备相关推荐

  1. STM32的USB例程JoyStickMouse改成自定义HID设备

    简介 USB HID类是USB设备的一个标准设备类,包括的设备非常多.HID类设备定义它属于人机交互操作的设备,用于控制计算机操作的一些方面,如USB鼠标.USB键盘.USB游戏操纵杆等.但HID设备 ...

  2. stm32自定义usb_HID设备

    Usb自定义HID设备(游戏控制器)总结工程是由cubemx创建的不会创建的可以参考文章最后链接.该链接教程为未定义输入输出设备,本教程为游戏控制器属于输入设备.在建立好USB工程之后,我们主要修改的 ...

  3. STM32 自定义HID USB设备的实现

    最近需要使用STM32开发一个设备通过HID协议与主机通信,于是开始学习USB,发现USB这个体系实在太庞大了,直接看USB的例程根本看不懂,完全找不到突破口,最后在网上找到一本不错的书<圈圈教 ...

  4. USB自定义HID设备实现-STM32

    该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在 #include "usb_desc.h& ...

  5. STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32端口初始化

    最近产品需要一个USB主机测试治具,所以需要做一个USB HOST去读取HID设备的数据,由于以前也没做过USB方面的项目,对这一块也不是很熟悉,因此遇到了很多困难,所幸的是经过两天半的努力,最终完成 ...

  6. STM32 USB复合设备,USB键盘+自定义HID设备

    上面是我的微信和QQ群,欢迎新朋友的加入. 最近研究USB复合设备 主要是把键盘和电脑音量控制两个东西给合并成一个设备 首先要知道的一点的是,不论是键盘.鼠标.或者这个标准的HID用户控制设备,本质都 ...

  7. USB自定义HID设备实现-LPC1768

    首先在之前鼠标的基础上修改设备描述符 #include "usbdesc.h" //usb标准设备描述符 const U8 USB_DeviceDescriptor[] = { U ...

  8. STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32配置CH375B接口函数

    接着上一篇上传,这个是STM32配置CH375B时用到的接口函数 头文件: #ifndef __BSP_CH375_H__ #define __BSP_CH375_H__#include " ...

  9. USB协议学习笔记 - CUSTOM HID 设备

    简介 这里使用STM32平台进行USB 协议的学习与USB 设备的调试开发 USB HID设备,协议较固定,无法实现数据的自由接收与发送 USB CUSTOM HID设备(自定义HID协议)可以实现简 ...

最新文章

  1. 涉密文件检查工具_肇庆高要销毁资料文件公司粉碎销毁文件资料公司欢迎您
  2. JavaMail邮件发送不成功的那些坑人情况及分析说明
  3. 动态构建siteMap(导航,asp.net)
  4. http强制跳转https,POST请求变成GET
  5. 每日一题(2)—— -2与2的比较
  6. 中blur函数_Comonad在图像处理中的应用
  7. python生成json_python之生成多层json结构的实现
  8. MIT计算机专业本硕连读几年,2020年麻省理工学院读研要多久
  9. Myeclipse打断点太多,不知道怎么一次性全删除
  10. 全国计算机等级内容,全国计算机等级内容
  11. 利用jmeter对mysql数据库进行压力测试
  12. HDU 3966 dfs序+LCA+树状数组
  13. 八、JVM视角浅理解并发和锁
  14. oracle服务器配置及优化
  15. SUFFER软件测试工程师,Ubuntu9.0.4下FreeSurfer的安装(转)
  16. Diamond软件的使用--(1)软件安装及配置
  17. Python渗透测试之流量分析:流量嗅探工具编程
  18. git报错:remote: warning: Large files detected. / 移动文件夹
  19. CorelDraw手表实例实操作让你全面了解技术的综合应用
  20. java 序列化_java的序列化机制,这一篇文章就够了

热门文章

  1. 电脑只有飞行模式 不显示任何WiFi信号
  2. 十字光标太小怎么调节、CAD梦想画图算量技巧
  3. PCB设计—AD20和立创EDA设计(1)创建项目
  4. xp系统电脑如何链接宽带连接服务器,WinXP设置开机自动宽带连接的方法
  5. 100G QSFP28 CLR4单模光模块的介绍及对比
  6. 一个故事看懂AI神经网络工作原理
  7. 团建游戏----气球大赛
  8. 程序员个人外包合同模板 私活模板
  9. 在 Leaflet 中合并使用谷歌中国卫星图和高德地图
  10. html+css模仿微信主页面