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

STM32H743+USBHID+CubeMX配置

一、环境准备

电脑系统:Windows 10 专业版 20H2

IDE:Keil v5.35、STM32CubeMX v6.5.0

测试硬件:正点原子阿波罗STM32H743

二、测试步骤

1、使用用例工程

配置STM32H743定时器功能-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/horse_2007s/article/details/139175169

2、配置USB引脚

在“Connectivity”中,选择“USB_OTG_FS”,如图,即选择PA11与PA12对应的USB,且为FS类型

3、配置中间件HID从设备

在“Middleware”中,选择“USB_DEVICE”,设置“FS”的IP核为HID

设置通讯间隔

设备PID VID

4、设置USB时钟(48M倍数)

5、生成工程代码代码

完成初始化

6、修改USB描述符

在 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 1 */0x05,0x8c, /* USAGE_PAGE (ST Page) */0x09,0x01, /* USAGE (Demo Kit) */0xa1,0x01, /* COLLECTION (Application) */// The Input report0x09,0x03, // USAGE ID - Vendor defined0x15,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 report0x09,0x04, // USAGE ID - Vendor defined0x15,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 1 */0xC0    /*     END_COLLECTION             */
};

7、修改通讯帧长度

usbd_customhid.h中

8、声明外部定义的USB句柄

extern USBD_HandleTypeDef hUsbDeviceFS;
uint8_t usbrx[64];

9、在接收事件中添加代码

static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)
{/* USER CODE BEGIN 6 */UNUSED(event_idx);UNUSED(state);//获取接收指针USBD_CUSTOM_HID_HandleTypeDef     *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);//将数据copy到接收缓存for(int i=0;i<64;i++) {usbrx[i]=hhid->Report_buf[i];	} //处理,或者在其他地方处理USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,usbrx,64);	/* Start next USB packet transfer once data processing is completed */if (USBD_CUSTOM_HID_ReceivePacket(&hUsbDeviceFS) != (uint8_t)USBD_OK){return -1;}return (USBD_OK);/* USER CODE END 6 */
}

10、编译运行

 

三、运行效果

USB Tree检测正常

调试助手通讯正常

四、工程资料下载

2-USBHID.rar (访问密码: 1666)icon-default.png?t=N7T8https://url48.ctfile.com/f/33868548-1250138927-85bc77?p=1666
 

相关文章:

STM32H743+USBHID+CubeMX配置

一、环境准备 电脑系统&#xff1a;Windows 10 专业版 20H2 IDE&#xff1a;Keil v5.35、STM32CubeMX v6.5.0 测试硬件&#xff1a;正点原子阿波罗STM32H743 二、测试步骤 1、使用用例工程 配置STM32H743定时器功能-CSDN博客https://blog.csdn.net/horse_2007s/article/d…...

路由传参和获取参数的三种方式

路由传参和获取参数在前端开发中是一个常见的需求&#xff0c;特别是在使用如 Vue.js、React 等前端框架时。下面&#xff0c;我将以 Vue.js 为例&#xff0c;介绍三种常见的路由传参和获取参数的方式&#xff1a; 1. 使用 params 传参 传参&#xff1a; 在路由配置中&#…...

代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

代码随想录算法训练营第四十一天 509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 动规五部曲&#xff1a; 确定dp数组以及下标的含义&#xff1a;第i个数的斐波那契数值是dp[i]确定递推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2];dp数组如何初始化&#xff1a;dp[…...

HTML5表单控件:新时代的交互魔法手册

&#x1f680;HTML5表单控件&#xff1a;新时代的交互魔法手册 &#x1f3af;HTML5表单控件速览&#xff1a;新面孔&#xff0c;新功能1. 日期时间选择器&#xff08;Date & Time Picker&#xff09;2. 数字输入框&#xff08;Number Input&#xff09;3. 搜索框&#xff0…...

WordPress安装插件失败No working transports found

1. 背景&#xff08;Situation&#xff09; WordPress 社区有非常多的主题和插件&#xff0c;大部分人用 WordPress 都是为了这些免费好用的主题和插件。但是今天安装完 WordPress 后安装插件时出现了错误提示&#xff1a;“ 安装失败&#xff1a;下载失败。 No working trans…...

多线程理论及操作

【一】什么是线程 在传统操作系统中&#xff0c;每个进程有一个地址空间&#xff0c;而且默认就有一个控制线程 线程顾名思义&#xff0c;就是一条流水线工作的过程 一条流水线必须属于一个车间&#xff0c;一个车间的工作过程是一个进程 车间负责把资源整合到一起&#xff…...

本周 MoonBit 核心库进行 API 整理工作、工具链持续完善

MoonBit更新 【核心库 Breaking】核心库进行API整理工作 所有immutable数据结构被放在immut路径下&#xff0c;如immutable_hashmap.Map变为immut/hashmap.Map // Before let a : immutable_hashmap.Map[Int, Int] immutable_hashmap.make() // After let a : immut/hashma…...

Golang net/http标准库常用方法(三)

大家好&#xff0c;针对Go语言 net/http 标准库&#xff0c;将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节&#xff0c;请大家多多关注。 文章中代码案例只有关键片段&#xff0c;完整代码请查看github仓库&#xff1a;https://github.com/hltfa…...

24校招总结

个人背景 本科&#xff1a;三本通信专业 硕士&#xff1a;B区双非计算机硕 今年2月签了东南沿海二线城市某公司C游戏服务端开发 我同学大部分都是去电网&#xff0c;大专老师&#xff0c;气象局事业编……就我这个是纯牛马了。 离收到Offer3个月了&#xff0c;前段时间参加…...

PHP APCu缓存使用与避坑

APCu 极简概括&#xff1a; PHP 的开源内存缓存扩展&#xff0c;类比Redis&#xff0c;但是一般都用Redis&#xff0c;所以APCu用的很少。官方文档&#xff1a;https://www.php.net/manual/zh/apcu.configuration.php解决问题&#xff1a;类比Redis做缓存组件&#xff0c;提升…...

mybatis xml

delete from t_enterprise_output_value where output_id IN #{outputId} 批量插入 功能&#xff1a;单个或批量插入数据&#xff0c;若数据已存在&#xff0c;则忽略 <insert id"saveBatchIgnoreInto" parameterType"java.util.List">insert igno…...

“不是我兄弟”!刘强东内部“狼性训话”流出!

今天&#xff0c;京东创始人刘强东5月24日的线上讲话流出。 在这次线上讲话中&#xff0c;刘强东首先宣布为全体采销员工涨薪20%—100%&#xff0c;随后进行了一番“狼性训话”。往期报道可戳&#xff1a;刘强东怒了&#xff1a;“不是我兄弟”&#xff01; 刘强东在讲话中指…...

函数调用时长的关键点:揭秘参数位置的秘密

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、默认参数的秘密 示例代码 二、关键字参数与位置参数的舞蹈 示例代码 总结 一、默认参…...

【数据分析面试】54.员工信息(HR)数据库搭建

题目 由于发展需求&#xff0c;进一步提高公司人员统筹管理的能力&#xff0c;公司决定要重新升级人力数据管理系统。 现在&#xff0c;你的任务是为公司重新设计和搭建一个员工信息数据库。 提示&#xff1a;考虑HR管理系统的功能&#xff0c;比如人员信息、入职时间、离职…...

通过JavaScript本地存储数据

文章目录 本地存储本地存储分类 - localStorage本地存储分类 - sessionStorage存储复杂数据类型解决方法 本地存储 数据存储在用户浏览器中设置、读取方便、甚至页面刷新都不丢失数据容量较大&#xff0c;sessionStorage和localStorage约5M左右 本地存储分类 - localStorage …...

CTF-web-攻防世界-3

1、inget (1)、进入网站&#xff0c;提示传入id值 (2)、用一些闭合方式&#xff0c;返回都一样。 (3)、尝试万能密码。获得flag 2、mfw (1)、页面没有什么特殊的异常&#xff0c;使用dirsearch进行目录扫描&#xff0c;有一些.git文件。看样子是.git文件泄露。 使用githa…...

【附代码案例】深入理解 PyTorch 张量:叶子张量与非叶子张量

在 PyTorch 中&#xff0c;张量是构建神经网络模型的基本元素。了解张量的属性和行为对于深入理解模型的运行机制至关重要。本文将介绍 PyTorch 中的两种重要张量类型&#xff1a;叶子张量和非叶子张量&#xff0c;并探讨它们在反向传播过程中的行为差异。 叶子张量与非叶子张…...

TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用

1. 引言 在前几篇学习笔记中,我们已经探讨了 TypeScript 的基础知识和在前端框架(如 Angular 和 React)中的应用。本篇将重点介绍 TypeScript 在后端开发中的应用,特别是如何与 Node.js 和 Express 结合使用,以构建强类型、可维护的后端应用。 2. TypeScript 与 Node.js…...

Linux基础知识点总结!超详细

Linux 的学习对于一个IT工程师的重要性是不言而喻的&#xff0c;学好它是工程师必备修养之一。 Linux 基础 操作系统 操作系统Operating System简称OS&#xff0c;是软件的一部分&#xff0c;它是硬件基础上的第一层软件&#xff0c;是硬件和其它软件沟通的桥梁。 操作系统…...

中小学校活动怎样投稿给媒体报道宣传?

身为一名学校老师,同时承担起单位活动向媒体投稿的宣传重任,我深知每一次校园活动背后的故事,都承载着师生们的辛勤汗水与教育的无限可能。起初,我满怀着对教育的热情,希望通过文字传递校园的温暖与光芒,却在投稿的道路上遇到了前所未有的挑战。 最初,我选择了最传统的路径——…...

从零到一:用Python和TensorFlow搭建卫星图像识别系统,Vue3+Django全栈实战

从零构建卫星图像识别全栈系统&#xff1a;Python与Vue3的深度协同实战 卫星图像识别技术正在重塑农业监测、城市规划与灾害预警等领域的决策方式。想象一下&#xff0c;当无人机拍摄的农田图像能自动识别作物健康状况&#xff0c;或城市规划部门通过卫星照片实时监控建筑变化—…...

apache-dolphinscheduler-3.4.1调度器配置虚拟机

1、下载文件3.4.1下载安装包https://mirrors.tuna.tsinghua.edu.cn/apache/dolphinscheduler/3.4.1/ 2、传到虚拟机/home/spark2下 3、解压并重命名 4、初始化 MySQL 数据库 &#xff08;1&#xff09;启动 MySQL 服务 &#xff08;2&#xff09;登录 MySQL&#xff08;输入 r…...

Elasticsearch面试八股整理

1. Elasticsearch 和 Lucene 是什么关系&#xff1f;这是高频第一问。你可以答&#xff1a;“Lucene 是底层全文检索库&#xff0c;负责倒排索引、分词、评分这些核心能力。Elasticsearch 是在Lucene 之上做的分布式封装&#xff0c;提供了集群、分片、副本、REST API、聚合分析…...

AI与数据库智能交互:Qwen3-0.6B-FP8实现自然语言转SQL查询

AI与数据库智能交互&#xff1a;Qwen3-0.6B-FP8实现自然语言转SQL查询 你有没有过这样的经历&#xff1f;面对公司后台密密麻麻的数据表&#xff0c;想查点东西&#xff0c;却不知道该怎么写SQL语句。或者&#xff0c;你是个业务人员&#xff0c;每次想分析数据都得找技术同事…...

告别编译失败:Qt 6.6.0交叉编译到ARM平台最常见的5个错误及解决方法(基于gcc-linaro-14.0.0)

告别编译失败&#xff1a;Qt 6.6.0交叉编译到ARM平台最常见的5个错误及解决方法&#xff08;基于gcc-linaro-14.0.0&#xff09; 最近在将Qt 6.6.0交叉编译到i.MX6ULL开发板时&#xff0c;遇到了不少坑。作为一个经历过多次编译失败的老手&#xff0c;我整理了几个最容易导致编…...

Lux测试框架完整指南:如何编写高效的数据可视化测试用例

Lux测试框架完整指南&#xff1a;如何编写高效的数据可视化测试用例 【免费下载链接】lux Automatically visualize your pandas dataframe via a single print! &#x1f4ca; &#x1f4a1; 项目地址: https://gitcode.com/gh_mirrors/lux/lux Lux是一个强大的Python数…...

4月,新一轮发票抽奖,请收好这份开具发票指南!!

4月&#xff0c;重庆发票抽奖新的一轮发票抽奖已经了&#xff08;目前第三轮&#xff09;。你所在的城市不知道是不是也是第三期发票抽奖了。发票抽奖首先需要发票。发票除了线下直接找商家开具外&#xff0c;我们也可以在线上直接开具。这份发票开具指南&#xff0c;归纳总结我…...

Qt网络聊天室实战:如何优雅地实现聊天列表动态加载与滚动优化?

Qt网络聊天室实战&#xff1a;高性能聊天列表的架构设计与优化实践 1. 现代聊天界面的性能挑战与设计哲学 在即时通讯应用开发中&#xff0c;聊天列表的性能表现直接影响用户体验。当列表项超过100条时&#xff0c;传统实现方式往往会出现明显的滚动卡顿、内存占用飙升等问题。…...

乐鑫联合 Bosch Sensortec(博世传感器)推出磁感应交互方案

在 AI 玩具与智能硬件的设计中&#xff0c;如何在有限的空间与成本条件下&#xff0c;实现稳定且顺畅的配件交互&#xff0c;正成为产品创新的重要课题。 乐鑫信息科技 (688018.SH) 携手 Bosch Sensortec&#xff08;博世传感器&#xff09;推出了一种更轻量、更可靠的解决思路…...

国产视频会议核心技术解析:架构、特性与全场景落地

在数字化协同办公发展与信息安全防护需求的双重推动下&#xff0c;视频会议国产化已经从政策导向阶段迈入技术落地的成熟期&#xff0c;其核心价值集中体现在自主可控、安全可靠、全场景适配三大维度。依托硬件基础、编解码技术、传输优化、安全防护以及生态兼容的全链条技术创…...