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

STM32 USB 设备的描述信息作用

在使用 STM32 USB 功能时  usbd_desc.c 文件中定义了一段宏,以下解每段宏的用途。

#define USBD_VID                       1155
#define USBD_LANGID_STRING             1033
#define USBD_MANUFACTURER_STRING      "STMicroelectronics"
#define USBD_PID                       22336
#define USBD_PRODUCT_STRING           "STM32 Virtual ComPort"  
#define USBD_CONFIGURATION_STRING     "CDC Config"
#define USBD_INTERFACE_STRING         "CDC Interface"

这段代码是一系列宏定义,主要用于定义 USB 设备的描述信息。这些信息在 USB 设备与主机通信时,会被主机读取,从而识别设备的相关属性。下面对每个宏定义进行详细解释:

1. USBD_VID

#define USBD_VID                       1155
  • 含义USBD_VID 代表 USB 设备的厂商 ID(Vendor ID)。每个 USB 设备制造商都会从 USB Implementers Forum(USB-IF)处获得一个唯一的厂商 ID。这里 1155 对应的是意法半导体(STMicroelectronics),表示该 USB 设备是由意法半导体制造的。

2. USBD_LANGID_STRING

#define USBD_LANGID_STRING             1033
  • 含义USBD_LANGID_STRING 定义了设备描述字符串所使用的语言 ID。1033 表示英语(美国),意味着该 USB 设备的描述字符串(如制造商名称、产品名称等)使用的是英语(美国)语言。

3. USBD_MANUFACTURER_STRING

#define USBD_MANUFACTURER_STRING      "STMicroelectronics"
  • 含义USBD_MANUFACTURER_STRING 定义了设备制造商的名称。这里明确指出该 USB 设备的制造商是意法半导体。当主机查询设备信息时,会显示这个制造商名称。

4. USBD_PID

#define USBD_PID                       22336
  • 含义USBD_PID 代表 USB 设备的产品 ID(Product ID)。同一厂商的不同产品会有不同的产品 ID,用于区分不同型号的设备。22336 标识了该特定的 USB 产品。

5. USBD_PRODUCT_STRING

#define USBD_PRODUCT_STRING           "STM32 Virtual ComPort"
  • 含义USBD_PRODUCT_STRING 定义了设备的产品名称。这里表明该 USB 设备是 “STM32 Virtual ComPort 虚拟串口”,主机在识别设备时会显示这个产品名称,方便用户了解设备的功能。

6. USBD_CONFIGURATION_STRING

#define USBD_CONFIGURATION_STRING     "CDC Config"
  • 含义USBD_CONFIGURATION_STRING 定义了设备的配置名称。“CDC Config” 表示该设备采用了通信设备类(CDC,Communication Device Class)的配置,CDC 常用于实现虚拟串口等通信功能。

7. USBD_INTERFACE_STRING

#define USBD_INTERFACE_STRING         "CDC Interface"
  • 含义USBD_INTERFACE_STRING 定义了设备接口的名称。“CDC Interface” 表明该设备使用的是 CDC 接口,用于与主机进行通信。

        这些宏定义为 USB 设备提供了必要的描述信息,使得主机能够正确识别和使用该 USB 设备。在实际的 USB 设备开发中,这些信息通常会被包含在 USB 设备描述符中,通过 USB 协议传输给主机。

相关文章:

STM32 USB 设备的描述信息作用

在使用 STM32 USB 功能时 usbd_desc.c 文件中定义了一段宏,以下解每段宏的用途。 #define USBD_VID 1155 #define USBD_LANGID_STRING 1033 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define US…...

Redis字符串常见命令(String)

字符串常见命令(String) Redis 中的字符串类型是一种非常基础且常用的数据类型,它不仅可以存储任何形式的字符串(包括文本数据),还可以对数字字符串进行自增、自减等操作。以下是对 Redis 字符串类型常见命…...

Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)

A. Was there an Array? 翻译: 对于整数数组 ​,我们将其相等特征定义为数组 ,其中,如果数组 a 的第 i 个元素等于其两个相邻元素,则 ;如果数组 a 的第 i 个元素不等于其至少一个相邻元素,则 …...

基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)

基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...

面试知识点2

文章目录 1. Linux 与 DockerLinux 基本指令VMware 安装 CentOSDocker 拉取镜像创建容器、部署 Spring Boot 项目 2. 关系型数据库 MySQL数据库语法多表关联查询数据库索引 3. 事务与死锁事务的隔离级别死锁的原因和避免方法 4. 排序算法与数据结构二分查找快速排序常见数据结构…...

Django项目之订单管理part1

一.前言 我们前面把django的常用知识点给讲完了,现在我们开始项目部分,项目是一个订单管理系统,我们同时也会在项目之中也会讲一些前面没有用到的知识点。 项目大概流程如下: 核心的功能模块: 认证模块,用…...

基于SSM+Vue的智能汽车租赁平台设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

deepseek本地调用

目录 1.介绍 2.开始调用 2.1模型检验 2.2 通过url调用 3.总结 1.介绍 这篇博客用来教你如何从本地调用ollama中deepseek的模型接口,直接和deepseek进行对话。 2.开始调用 2.1模型检验 首先要保证ollama已经安装到本地,并且已经下载了deepseek模型…...

文件同步工具哪家强?FreeFileSync 免费无限制

FreeFileSync 是一款备受推崇的开源文件同步与备份软件,凭借其卓越的功能和简洁直观的界面,赢得了全球用户的青睐。该软件不仅支持跨平台操作,兼容 Windows、macOS 和 Linux 系统,还能帮助用户在不同设备之间无缝同步文件&#xf…...

捷米特 JM - RTU - TCP 网关应用 F - net 协议转 Modbus TCP 实现电脑控制流量计

一、项目背景 在某工业生产园区的供水系统中,为了精确监测和控制各个生产环节的用水流量,需要对分布在不同区域的多个流量计进行集中管理。这些流量计原本采用 F - net 协议进行数据传输,但园区的监控系统基于 Modbus TCP 协议进行数据交互&…...

Coze扣子怎么使用更强大doubao1.5模型

最近,豆包刚刚发布了最新的doubao1.5系列模型,并且加量不加价。 在性能极大进步的情况下,价格还与之前一致。真是业界良心了。 在同样的价格下,肯定要使用性能更强大的模型嘛 于是我准备把所有的智能体和工作流切换到doubao1.5…...

layui 远程搜索下拉选择组件(多选)

模板使用&#xff08;lay-module/searchSelect&#xff09;&#xff0c;依赖于 jquery、layui.dist 中的 dropdown 模块实现&#xff08;所以data 格式请参照 layui文档&#xff09; <link rel"stylesheet" href"layui-v2.5.6/dist/css/layui.css" /&g…...

嵌入式学习(18)---Linux文件编程中的进程

一、进程的概念 进程:(用来描述 程序动态执行的过程&#xff0c;方便操作系统管理的) 进行中的程序 程序的一次执行过程 (内存 CPU) 程序的实例 程序 ----加载到内存----> 进程 应用场景: 实现并发 同一时刻 同时发生 并行 …...

一.AI大模型开发-初识机器学习

机器学习基本概念 前言 本文主要介绍了深度学习基础&#xff0c;包括机器学习、深度学习的概念&#xff0c;机器学习的两种典型任务分类任务和回归任务&#xff0c;机器学习中的基础名词解释以及模型训练的基本流程等。 一.认识机器学习 1.人工智能和机器学习 人工智能&am…...

RoCE和 TCP的区别

RoCE&#xff08;RDMA over Converged Ethernet&#xff09;和 TCP&#xff08;Transmission Control Protocol&#xff09;都是用于数据传输的协议&#xff0c;但它们在多个方面存在显著区别&#xff0c;以下为你详细介绍&#xff1a; 设计目标 RoCE&#xff1a;主要设计目标…...

勒索病毒攻击:如何应对和恢复

近年来,勒索病毒(Ransomware)已经成为全球信息安全领域最具破坏力的威胁之一。无论是个人用户,还是大中型企业,甚至政府机构,勒索病毒的攻击频率和破坏性日益增加。2020年及2021年,勒索病毒攻击不仅数量激增,且其攻击手法、目标和传播方式也变得更加复杂、精密和具有针…...

解决MySQL错误:You can‘t specify target table ‘xxx‘ for update in FROM clause

目录 错误复现场景原因分析解决方案方法1&#xff1a;使用派生表&#xff08;推荐&#xff09;方法2&#xff1a;改用JOIN操作方法3&#xff1a;使用临时表 总结 在编写MySQL的UPDATE或DELETE语句时&#xff0c;如果子查询中直接引用了要操作的目标表&#xff0c;可能会遇到一个…...

在Linux上安装和使用Docker

在Linux上安装和使用Docker&#xff1a;一步步指南 Docker是一种流行的容器化平台&#xff0c;它可以帮助开发者轻松构建、部署和运行应用程序。在本文中&#xff0c;我们将介绍如何在Linux系统上安装Docker&#xff0c;并提供一些常用的Docker命令和使用说明。 1. 安装Docke…...

【Git】四、标签管理

文章目录 Ⅰ. 理解标签Ⅱ. 创建标签① 轻量级标签② 含附注类标签 Ⅲ. 操作标签 Ⅰ. 理解标签 ​ 标签 tag &#xff0c;可以简单的理解为是 对某次 commit 的一个标识&#xff0c;相当于起了一个别名。例如&#xff0c;在项目发布某个版本的时候&#xff0c;针对最后一次 com…...

elementui中aria-hidden报错

浏览器检查的原因&#xff0c;不影响功能&#xff0c;但会在控制台报红 解决办法&#xff1a; 在对应元素设置display:none .el-radio__original {display: none !important;}...

mini-job极简分布式延迟任务队列 — 基于 Redis,支持 Cron 周期任务、异步协程和多执行器

mini-job 极简分布式延迟任务队列 — 基于 Redis&#xff0c;支持 Cron 周期任务、异步协程和多执行器。 特性特性说明延迟任务设定延迟秒数&#xff0c;到期自动执行Cron 周期调度支持标准 cron 表达式&#xff08;分 时 日 月 星期&#xff09;三种执行器async 协程&#xff…...

【2024性能革命】:Java 25正式启用向量API硬件加速——但92%开发者仍在用纯Java循环(附迁移Checklist速查表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Java 25向量API硬件加速的演进本质与时代意义 Java 25 引入的 Vector API&#xff08;JEP 478&#xff09;标志着 JVM 从“通用抽象”迈向“软硬协同”的关键转折。它不再仅依赖 JIT 编译器对循环的自动…...

AirPodsDesktop:Windows与Linux平台AirPods体验完整解决方案

AirPodsDesktop&#xff1a;Windows与Linux平台AirPods体验完整解决方案 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop AirPo…...

风控规则变更要停服重启?Python动态AST解析器+YAML策略热加载,实现0.3秒内全量策略生效(含生产环境压测数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python 电商实时风控决策 在高并发电商场景中&#xff0c;实时风控系统需在毫秒级完成欺诈识别、刷单检测与异常交易拦截。Python 凭借其丰富的生态&#xff08;如 pandas、scikit-learn、Redis 客户端…...

SCI配图!多元变分模态分解+组合+RUL预测!MVMD-Transformer-GRU锂电池剩余寿命预测(容量特征提取+剩余寿命预测)

SCI配图&#xff01;多元变分模态分解组合RUL预测&#xff01;MVMD-Transformer-GRU锂电池剩余寿命预测&#xff08;容量特征提取剩余寿命预测&#xff09;研究背景 锂离子电池在储能和电动汽车等领域应用广泛&#xff0c;其容量会随充放电循环逐渐衰减。准确预测电池容量衰退趋…...

sizeof(unique_ptr) 不总是 8——从 default_delete 到 compressed_pair,拆解零开销承诺的三层实现

"unique_ptr 是零开销的,sizeof 等于裸指针。"这句话在网上传了十几年。面试会问,博客会写,同事之间也会这么说。 它对吗?对,但只对了三分之一。 在 64 位系统上跑一段代码: struct FileCloser {void operator()(FILE* f) const {if (f)...

2026 AI应用元年:成败不靠模型,全看落地速度

业内已经形成共识&#xff1a;2026不是大模型升级年&#xff0c;而是AI真正的应用元年。过去几年&#xff0c;行业一直在卷参数、卷跑分、卷多模态噱头。企业买了模型、开了账号、做了演示Demo&#xff0c;但始终停留在聊天、写文案、生成代码片段的表层试用&#xff0c;好看不…...

小林大模型|大模型面试高频知识点合集2

什么是 Agent&#xff1f;与大模型有什么本质不同&#xff1f; 面试时答这道题&#xff0c;一定要点出三件事&#xff1a;一是 Agent 有自主规划能力&#xff0c;给它一个复杂目标它能自己拆解成多步&#xff1b;二是它能行动&#xff0c;通过工具调用跟外部世界真实交互&…...

告别盲调!在STM32上实现FOC控制:从ADC采样中断到SVPWM生成的代码实战与调试心得

STM32实战&#xff1a;FOC控制从ADC采样到SVPWM生成的工程全解析 当电机控制算法从仿真器跳进真实芯片时&#xff0c;理论公式突然变得具体而微妙。我曾用示波器捕捉到这样一个瞬间&#xff1a;在ADC采样触发的瞬间&#xff0c;PWM波形边缘出现了难以解释的毛刺——这提醒我们&…...

【Backend Flow工程实践 12】Collection / Property / Filter:为什么对象查询能力决定 Backend 脚本工程上限?

作者&#xff1a;Darren H. Chen 方向&#xff1a;Backend Flow / 后端实现流程 / EDA 工具工程 / Tcl 脚本工程 demo&#xff1a;LAY-BE-12_collection_property_filter 标签&#xff1a;Backend Flow、EDA、Tcl、Collection、Property、Filter、Design Object Model、后端实现…...