STM32 USB HID的GET_REPORT 与 SET_REPORT请求
原文地址::http://blog.csdn.net/shench88/article/details/26719121
相关文章
1、usb通过getreport和setreport发送数据怎么设置----https://zhidao.baidu.com/question/1431521827822950619.html
2、自定义hid设备set_report设置和get_report获取报告描述符控制8字节数据 ----http://zhangzhian.blog.163.com/blog/static/23589602010426103338869/
3、USB之HID类Set_Report Request[调试手记1]----http://www.cnblogs.com/libra13179/p/7365910.html
4、使用STM32CubeMX生成USB_HOST_HID工程[添加对CAPS_LOCK指示灯的控制][SetReport]----http://www.cnblogs.com/libra13179/p/7373217.html
5、在USB键盘中取得SET REPORT的作法----http://bbs.21ic.com/icview-1076414-1-1.html
6、在USB KEYBOARD下,结合SET_REPORT及GET_REPORT的传输方式 ----http://bbs.21ic.com/icview-955196-1-1.html
7、头大, NUC1xx USB HID Set Report数据不对 [问题解决]----http://bbs.ic37.com/bbsview-34051.htm
1)在usb_prop.c的函数CustomHID_Data_Setup()中,GET_PROTOCOL之后增加如下代码:
/*** GET_PROTOCOL ***/
else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_PROTOCOL)
{
CopyRoutine = CustomHID_GetProtocolValue;
} /* 以上代码为原有例程中的代码 */
/*** GET_REPORT ***/ /* 以下代码支持GET_REPORT */
else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
CopyRoutine = CustomHID_GetReport;
}
2)再增加一个函数:
uint8_t *CustomHID_GetReport(uint16_t Length)
{
if (Length == 0)
{
return 10;
}
return &Report_Buffer[pInformation->Ctrl_Info.Usb_wOffset];
}
3)保证在IN Token到来之前,Report_Buffer中包含有效的数据。
上述过程十分简单,但有时不能保证在IN Token到来之前,Report_Buffer中包含有效的数据,即要发送的数据还没有准备好;这时就希望先设置一个标志,让IN Token返回NAK,让CustomHID_Data_Setup()这个函数返回,待数据准备好之后再继续前述的数据拷贝过程。
这个要求使用STM32的USB开发库也是很容易实现的:
1)在usb_prop.c的函数CustomHID_Data_Setup()中,GET_PROTOCOL之后增加的代码变为这样:
/*** GET_REPORT ***/
else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
if (数据未准备好)
return USB_NOT_READY;
CopyRoutine = CustomHID_GetReport;
}
这样,STM32将以NAK回应PC端的IN请求。
2)同样增加一个函数CustomHID_GetReport。
3)在数据准备好之后(注意准备数据的时间不能太长,否则PC端会做超时处理),执行下述操作:
pInformation->Ctrl_Info.CopyData = CustomHID_GetReport;
pInformation->Ctrl_Info.Usb_wOffset = 0;
CustomHID_GetReport(0);
pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize;
DataStageIn();
STM32 USB HID的GET_REPORT 与 SET_REPORT请求相关推荐
- 记录一下 开发STM32 USB HID踩过的坑
记录一下 开发STM32 USB HID踩过的坑 一.前言 二.代码配置 一.前言 MCU: STM32F103C8T6 CubeMX: STM32CubeMX 5.3.0 二.代码配置 引脚配置 时 ...
- STM32 USB HID Mouse And Keyboard (guide)
There is a post (STM32 And Custom USB HID Device? Yes Please!) that gets a lot of attention, althoug ...
- STM32 USB HID IAP升级
找了网上大量的资料,最后发现这个东西人家还出售源码.又不是什么算法级的东西,实在理解不了. 至于为什么要用HID,不用官方的DFU,因为驱动呀,DFU识别USB的时候还是要装驱动,客户你永远理解不了他 ...
- stm32 USB HID+CDC 鼠标键盘串口 组合设备配置解析
前言 查阅网上的博客与代码,很多都是关于USB的鼠标配置.USB的键盘配置.USB的虚拟串口配置,稍微深入一点的会将鼠标键盘合在一起,但移植起来就会报很多错误,要么是检测不到,要么是警告,这很正常,因 ...
- STM32 USB HID设置(STM32CubeMX)
STM32F070F6P USB HID设置 1.打开STM32CubeMX软件,选择"NEW"新建一个工程 2.选择芯片型号STM32F070F6P 3.在Swap PA9/10 ...
- STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL)
STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL ) STM32的USB功能模块可以配置为虚拟串口(VCOM: Visual Port Com)或人机交互设备(HID: Hu ...
- STM32 USB设备远程唤醒机制详解
目录 1.USB Resume信号 2.USB远程唤醒的方式 3.J状态和K状态 4.STM32 USB设备远程唤醒机制详解 5.主机对设备远程唤醒功能状态的获取.清除和设置 1.USB Resume ...
- 62 stm32 usb自定义hid复合设备修改实验
1.引言 最近因为项目需要,我们希望单片机既能有hid键盘功能,又能有hid设备的功能.即单片机的一个usb接口插入电脑后,电脑能识别出键盘设备和hid设备,两者同时存在的. 基于项目只是要求实现功能 ...
- STM32 USB复合设备(VCP虚拟串口+HID键盘)详解
USB复合设备 介绍 USB复合设备与组合设备区别 USB描述符修改 修改CustomHID_Reset 修改CustomHID_Data_Setup 介绍 本次使用的是Keil 5+STM32F10 ...
- [转载]基于Stm32,LD3320的非特定语音识别USB HID Keyboar
基于Stm32,LD3320的非特定语音识别USB HID Keyboard实现 ---用声音跟机器沟通 鉴于手头拥有一块ST官方的stm32f407VG discover板子以及一块ICRoute公 ...
最新文章
- c++和c语言中的函数相互调用的问题
- SAP ABAP RFC table administration
- 2019牛客多校第一场
- 前端学习(2135):ES模块化的导出和导入
- mysql 慢sql分析_如何分析Mysql慢SQL
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
- 【Java线程】深入理解Volatile关键字和使用
- 上新了! 热门开源 AutoML 工具 NNI 2.0 来袭!
- 【备忘】Windows的命令行下设置网络代理
- 文本文档怎么改格式html,设置电脑更改文本文档格式,怎么更改文本文档格式-
- go tool vet是你的好朋友
- CTex下载地址和方法
- 锐捷服务器系统安全,更安全 锐捷网络发布RG-ESS易安全系统
- PHP简单的手机验证码验证过程
- [*CTF2022]web题目复现及wp
- MATLAB数学建模-规划模型总结| MATLAB求解
- [历朝通俗演义-蔡东藩-前汉]第012回 戕县令刘邦发迹 杀郡守项梁举兵
- 初始化git仓库(已存在项目)
- 概率统计Python计算:自定义离散型分布
- 六十二、Qt+Sqlserver 操作数类型冲突: varbinary 与 float 不兼容
热门文章
- 个人网站添加百度统计
- 浙江大学计算机学院的软件工程和软件学院的软件工程哪个好,关于举办计算机技术和软件工程硕士复习班的通知-硕士招生-浙江大学计算机科学与技术学院中文站...
- 黑暗城堡(最短路径树)
- linux系统硬件检测命令,一种Linux系统硬件检测的测试方法及系统与流程
- oliver什么意思java_英语名字“oliver”是什么意思?
- threejs炫酷金属样式龙卷风js特效
- 很全的zencart 模板修改
- 【WPS表格】数据透视表:统计各商品及各分店的销售总额
- Ubuntu系统挂载大于2T新硬盘方法
- 【092】韦达定理在一元n次方程中的推广