当前位置: 首页 > 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/14463164/

相关文章:

  • php管理系统 网站模版小程序开发兼职要多少钱
  • 河南省住房和城乡建设厅网站文件js特效素材网
  • 高端型网站建设国外外贸平台有哪些
  • 东莞网站设计公司哪家好不属于网站架构
  • wordpress 企业站 模板天河建设网站开发
  • 企业是做网站还是做微信网站是别人做的我这就没有根目录
  • aitt网站建设中泰安网络设计公司
  • 下载建网站荥阳做公司网站的公司
  • 怎么配置网站服务器申请域名后如何发布网站
  • 长春网站优化团队河南手机网站建设公司哪家好
  • 网站友链交换平台做什么网站开发最简单
  • 怎么做seo网站关键词优化网站个人备案麻烦吗
  • 哈尔滨建设银行网站网站设计佛山
  • 阿里云 全国网站建设平面设计免费软件
  • 广州做网站最好的公司网站开发教程 布局
  • 云南微网站搭建费用做网站网站会被判多久
  • 定制网站模板网站不备案可以建设吗
  • 自已建设网站流程wordpress自定义文章类型如何调用
  • 自己做免费手机网站软件网站建设基本流程
  • wordpress主题 动漫从百万到千万 网站怎么优化
  • 常见cms网站源码下载网站弹出广告gif出处
  • 营销网站的建立网站建设力度
  • 河源哪里做网站网站开发和运行 法律
  • 数字货币网站开发需求wordpress搭建cms网站
  • 怎么搭建网站视频教程网站销售怎么样
  • 购物网站运作建筑平面设计图
  • wordpress删除用户下所有文章上海网站营销seo电话
  • 没有网站怎么做排名优化网页怎么制作二维码
  • wordpress网站建设教程海外seo网站推广
  • 营销型网站跟云网站网站建设与规划专业