当前位置: 首页 > news >正文

模板网站建设多少钱外贸网站建设专业

模板网站建设多少钱,外贸网站建设专业,注册网站安全吗,做弹幕视频效果的网站文章目录 目的基础说明项目构建与代码调整接收发送代码与测试示例链接报告描述符总结 目的 接上篇#xff1a; 《STM32 USB使用记录#xff1a;HID类设备#xff08;前篇#xff09;》 USB HID 类的设备有个比较大的好处是大部分时候接入主机中都是可以免驱使用的。这篇文… 文章目录 目的基础说明项目构建与代码调整接收发送代码与测试示例链接报告描述符总结 目的 接上篇 《STM32 USB使用记录HID类设备前篇》 USB HID 类的设备有个比较大的好处是大部分时候接入主机中都是可以免驱使用的。这篇文章将介绍下 STM32 中实现 USB HID 双向透传功能结合免驱的特点这在实际工作中是比较常用的。 基础说明 在上一篇文章中简单了解接触了下HID设备了解了USB设备的各种描述符概念。在这篇文章追中我们要制作一个自定义的HID设备实现双向透传功能主要就是要调整配置描述符、端口、报告描述符等内容。 项目构建与代码调整 首先使用Cube工具来生成基础的项目其它内容和上一篇文章一样唯一不同的是 USB_DEVICE 这里选用 Custom Human Interface Device Class(HID) : 生成的项目和上篇文章中差不多 因为是自定义的HID设备所以报告描述符需要自己准备这里修改 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 { 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x00, // Usage (0x00) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (0x01) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x40, // Report Count (64) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0x02, // Usage (0x02) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x40, // Report Count (64) 0x91, 0x00, // Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 34 bytes };然后需要修改 usbd_conf.h 中一些定义值 /*---------- 接收缓冲区大小 -----------*/ /*---------- 对于全速设备收和发一个包最大都为64字节 -----------*/ #define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 64U /*---------- 报告描述符长度 -----------*/ #define USBD_CUSTOM_HID_REPORT_DESC_SIZE 34U /*---------- 端电查询时间间隔 -----------*/ /*---------- 对于全速设备该值为1表示最快可以每1ms通讯一次 -----------*/ #define CUSTOM_HID_FS_BINTERVAL 0x5U /*---------- -----------*/还需要修改 usbd_customhid.h 中的定义值 // 接收一个包最大为64字节 #define CUSTOM_HID_EPIN_SIZE 0x40U // 发送一个包最大为64字节 #define CUSTOM_HID_EPOUT_SIZE 0x40U上面的定义值的调整也可以在Cube工具中直接进行配置。 接收发送代码与测试 在 usbd_custom_hid_if.c 文件中修改接收事件 OutEvent 部分代码 uint32_t size 0; uint8_t buff[64];// 收到来自主机的数据时会触发该事件 static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state) {UNUSED(event_idx);UNUSED(state);size USBD_LL_GetRxDataSize(hUsbDeviceFS, CUSTOM_HID_EPOUT_ADDR); // 获取收到的数据长度USBD_CUSTOM_HID_HandleTypeDef *hhid (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);for(int i0; isize; i){buff[i]hhid-Report_buf[i]; // 读取接收到的数据}USBD_CUSTOM_HID_SendReport(hUsbDeviceFS, buff, size);// 开启下一次接收if (USBD_CUSTOM_HID_ReceivePacket(hUsbDeviceFS) ! (uint8_t)USBD_OK){return -1;}return (USBD_OK); }至此就可以进行测试了这里用的工具下载地址如下 https://pan.baidu.com/s/1i5QVmrN 测试时依据设备的VID和PID来分辨设备这两个值定义在 usbd_desc.c 文件中注意十进制和十六进制的差别 #define USBD_VID 1155 #define USBD_PID_FS 22352上面演示中接收部分代码有拷贝动作这在高性能需求下其实是不太合适的可以使用下面方式来处理 uint32_t size 0; uint8_t buff[64]; // 接收缓冲区 static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state) {size USBD_LL_GetRxDataSize(hUsbDeviceFS, CUSTOM_HID_EPOUT_ADDR); // 获取收到的数据长度USBD_CUSTOM_HID_SendReport(hUsbDeviceFS, buff, size); // 发送数据// 开启下一次接收设置接收缓冲区默认的USBD_CUSTOM_HID_ReceivePacket方法中调用的其实也是这个USBD_LL_PrepareReceive(hUsbDeviceFS, CUSTOM_HID_EPOUT_ADDR, buff, USBD_CUSTOMHID_OUTREPORT_BUF_SIZE);return (USBD_OK); }需要注意的是上面方式第一次接到数据是用的还是默认设置的缓冲区。 示例链接 仓库地址 https://github.com/NaisuXu/STM32_MCU_Examples 本示例为仓库中 USBD_HID_FS_H750 。 报告描述符 上面演示中用的是 USB FS ,该规范下HID一包数据最大为64Bytes如果使用 USB HS 那么每包最大为1024Bytes报告描述符可以使用下这个未测试 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x00, // Usage (0x00) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (0x01) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x96, 0x00, 0x04, // Report Count (1024) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0x02, // Usage (0x02) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x96, 0x00, 0x04, // Report Count (1024) 0x91, 0x00, // Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 36 bytesHID设备的报告描述符可以使用 HID Descriptor Tool 工具配置生成 https://www.usb.org/document-library/hid-descriptor-tool 总结 总体来说 STM32 中实现 USB HID 双向透传功能并不复杂。
http://www.hkea.cn/news/14553688/

相关文章:

  • 服务号wordpress站长之家seo
  • 文字游戏做的最好的网站电商专业是做什么的
  • 电子技术支持 东莞网站建设陆良县住房和城乡建设局网站
  • 嘉峪关市网站建设设计网站关键词密度太高怎么处理
  • 广州模板建站哪家好做淘推广的网站
  • a做片手机免费网站有哪些iis网站权限配置
  • 手机网站做适配wordpress 红色主题
  • 网站的优化公司海南房地产网站
  • 潍坊高密网站建设北京建工博海建设有限公司网站
  • 校园网站建设的基本条件教育公司网站模板
  • 跨境电商官方网站建设网站程序授权码
  • 百度收录网站排名c .net 做网站
  • 自己房子做民宿挂什么网站网站模板定制
  • 做宣传手册的网站wordpress 后台去版权
  • 开封做网站哪家好郑州网站建设哪家好
  • asp网站建设中期报告wordpress二次主题
  • 图片演示dw做网站查看wordpress作者名
  • 大型门户网站 要求深圳排名前十的跨境电商公司
  • 世界著名网站开发语言dede游戏网站源码
  • 做营销型网站网站模版建设
  • 网站点击率如何做綦江中国建设银行官网站
  • 电子商务网站开发文档最新款手机
  • 海南住房建设厅定额网站抖音代运营谈判技巧
  • 怎样做公司的网站太原网站制作最新招聘信息
  • 怎么用dw制作网站做网站的流程是怎么样的
  • 光聚济南网站建设成都网站建设服务
  • 怎样把自己做的网站发到网上建设一个个人小说网站
  • 做购物网站的初衷品牌网站分析
  • 南昌网站优化wordpress对接公众号源码
  • 公司网站建设 邮箱祁连网站建设公司