STM32CubeMX实现USB虚拟串口环回测试功能

news2024/9/23 17:20:29

STM32CubeMX实现USB虚拟串口环回测试功能


  • 📍参考ST官方给出的参考案例:https://www.stmcu.com.cn/Designresource/detail/LAT/711466
  • 🎈同功能配置可以参考《STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯》
  • 👉🏻对于Windows10系统是免驱的,电脑低于此操作系统的需要安装驱动:https://www.st.com/en/development-tools/stsw-stm32102.html

✨都是进行虚拟串口回环路功能测试,配置的相关代码有所差异。具体没有在严苛环境下对数据传输准确性测试。功能配置代码都是在usbd_cdc_if.c文件中进行配置。

📑配置补充说明

  • ⚡根据官方参考的配置参考需要注意,在配置void Main_loop(void)函数中,USB接收封包函数形参,改为&hUsbDeviceFS
    在这里插入图片描述

在这里插入图片描述

void Main_loop(void)
{
    uint32_t buffsize;

    if(UserTxBufPtrOut != UserTxBufPtrIn)
    {
        if(UserTxBufPtrOut > UserTxBufPtrIn) /* Rollback */
        {
            buffsize = UserTxBufPtrIn;
        }
        else
        {
            buffsize = UserTxBufPtrIn - UserTxBufPtrOut;
        }

        CDC_Transmit_FS((uint8_t*)(UserTxBufferFS + UserTxBufPtrOut), buffsize);
        UserTxBufPtrOut += buffsize;
        USBD_CDC_ReceivePacket(&hUsbDeviceFS);
    }
}

⛳需要将该函数名添加到对应的(#include "usbd_cdc_if.h")头文件中:

在这里插入图片描述

🔖需要将#include "usbd_cdc_if.h添加都main.c中。其他的内容按照官方文档说明进行配置即可。

  • 🌿时钟配置,需要注意时钟源以及外部晶振配置:(STM32CubeMX在配置RCC时,选择HSE时钟后,默认的钟频率不一定和自己所使用的开发板上的晶振频率一致,这里一定要仔细检查时钟树的HSE具体时钟频率)(个人使用STM32F401RC进行配置时,时钟树HSE这里默认配置的是25MHz,而实际开发板所使用的是8MHz,一开始没注意看,导致程序烧录后,无法识别到虚拟串口,后来导致排查问题找了好久才发现是时钟树这里,系统自动指定的HSE晶振频率不对)
    在这里插入图片描述

🔨烧录测试

  • 🌿烧录后,重新复位单片机,可以识别到虚拟串口。
    在这里插入图片描述

📐经测试,PA12接不接一个1.5K的上拉电阻都可以发现虚拟USB设备。

在这里插入图片描述

  • 🔧串口回环路测试:
    在这里插入图片描述

📚测试工程

链接:https://pan.baidu.com/s/1xN-vDPpIHYFvaXbgljuaWA 
提取码:z33y

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL系统函数

系统函数: 数学函数 1、abs() pi() 2、sqrt() 3、cell() floor() round() truncate() cell是向上取整,floor是向下取整。 注意:round负数和java里面的四舍五入有所不同 Round还可以指明位数 turncate是截断 4、power() …

颜色分类 (力扣)JAVA

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这…

用牛鲨NFT赚取SUI的机会,这不就来了?

很高兴向大家宣布Mysten Labs的Bullshark Quests活动,这是一个为Bullshark持有者提供赚取SUI奖励(和其他福利)的全新方式,Bullshark是ACES计划的一部分。Bullshark Quests将成为一个持续的活动,为Bullshark持有者提供通…

为什么需要多语言并行机器翻译?

随着全球化的加速和不同语言之间的交流需求不断增长,多语言机器翻译(Multilingual Parallel Machine Translation)成为一个备受关注的领域。传统上,机器翻译系统主要集中于一对特定语言之间的翻译,但这种单一语言对的模…

微服务的划分姿势分享

微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析。 微服务的划分矛盾在于粒度,如果粒度太大了,分和不分似乎都差…

npm 记录

转 请看原文,我只是怕原文没了,复制了一遍。我目的是想记录缓存那一块。 前端工程化 - 剖析npm的包管理机制 - 掘金 在content-v2/sha512 执行 grep -n "https://registry.npmjs.org/base64-js/-/base64-js-1.0.1.tgz" -r ./ 获取缓存包…

Java 定义返回一个不能被修改、删除元素的List

为啥突然分享下这个&#xff0c;也是从mybatis源码看到了&#xff0c;所以想分享下&#xff1a; org.apache.ibatis.plugin.InterceptorChain 使用 Collections.unmodifiableList(); 示例&#xff1a; public static void main(String[] args) {List<String> canNotEdit…

Android 曲线覆盖图

看图 样例代码 layout.xml <com.XXXXX.utils.GraphBendLineandroid:id"id/ghost_view"android:layout_width"200dp"android:layout_height"200dp"android:layout_margin"40dp"app:node_bar_line_color"#F9FEFD"app:nod…

药物设计学笔记:基础篇

笔记来自《药物设计学》 文章目录 1.药物设计的分子基础2.药物设计的理论基础 1.药物设计的分子基础 化学小分子药物与生物大分子靶标之间相互作用是药物设计的分子基础临床所用的药物50%都属于手性化合物&#xff0c;这是因为药物靶标的基本单元如氨基酸或核苷酸都是手性结构…

快来收藏这几款免费的图标设计软件!

图标素材为网站、应用程序、文档等提供简洁明了的标识&#xff0c;尽管AdobeIllustrator等付费图标设计软件功能强大&#xff0c;但是对于一些轻量级的设计要求&#xff0c;使用免费的图标设计软件是个不错的选择。本文将向大家介绍5款免费的图标设计软件&#xff0c;一起来看看…

【自我提升】Yolov5使用云端GPU训练模型(谷歌免费版和AutoDL收费版对比)

写在前面&#xff1a;继我前几篇Yolov5系列的博客后&#xff0c;来填一个云端训练数据的坑。我公司电脑只能使用CPU训练模型&#xff0c;很拉跨。我自己的笔记本虽然支持GPU&#xff0c;但是运行起来很卡&#xff0c;而且稍微设置设置大一点轮数和批次&#xff0c;就会报当前磁…

CentOS7 主机网卡怎么配置端口聚合

环境&#xff1a; CentOS7 CentOS Linux release 7.7.1908 (Core) 网卡1&#xff1a;瑞昱普通千兆板载网卡 网卡2&#xff1a;EB-LINK intel 82599芯片PCI-E X8 10G 光模块千兆单模1310X1 问题描述&#xff1a; CentOS7 主机网卡怎么配置端口聚合 配置网卡聚合链路的作…

揭秘验证码,你可能不知道的那些事儿

在现代网络世界中&#xff0c;我们经常遇到验证码这个概念。它是一种用于验证使用者身份或防止恶意行为的安全机制。然而&#xff0c;除了表面上的使用和功能&#xff0c;验证码还有许多有趣而不为人所知的方面。本文将带你揭秘验证码背后的秘密&#xff0c;探索你可能不知道的…

Ctfshow web入门 nodejs篇 web334-web344

CTFshow NodeJs web334 前言&#xff1a;做原型链污染&#xff0c;入门的话个人建议先看看P神的文章&#xff0c;只看前四部分就行了。 深入理解 JavaScript Prototype 污染攻击 | 离别歌 (leavesongs.com) 然后也得有一点js基础&#xff0c;不用太多&#xff0c;要不然看起…

浅谈电力监控系统在地铁运维中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;随着我国工业化进程的不断推进&#xff0c;我国监控系统也实现了长足的发展。以往传统的地铁监控模式已经无法满足当前需求&#xff0c;将电力监控系统和地铁综合监控系统已经进行资源整合&#xff0c;有效…

产品需求还原度低应该怎么办?

在实际开发过程中&#xff0c;产品设计的完整性较难保障和实现&#xff0c;产品需求还原度较低&#xff0c;前后端对产品设计理解不深入&#xff0c;可能会随意修改产品需求。从而造成后期需求设计不完整&#xff0c;产品风险增大等问题。 为了解决这一问题&#xff0c;我们可以…

【Linux进阶之路】gcc/g++、Makefile、git

前言 在正式开始之前我们先补充一个知识点——普通用户提权的操作。 sudo 【指令】那如何将tmp1添加到信任白名单——sudoers文件 中呢&#xff1f; 肯定不能自己加&#xff0c;得超级管理员root加——第一步&#xff1a;切到超级用户。 找到sudoers文件——/etc/sudoers …

生物信息学_玉泉路_课堂笔记_01 第一章生物信息学简介

&#x1f345; 课程&#xff1a;生物信息学_玉泉路_课堂笔记 中科院_2022秋季课 第一学期 &#x1f345; 个人笔记使用 &#x1f345; 2023/7/3 &#x1f345; 教材使用&#xff1a; 生物信息学是应用计算机科学和数学方法研究生物学问题的交叉学科。它包括了多个领域&#xf…

显示Gif菜单

需要 最近研究在底部菜单中加入gif播放。这样显得高级一些。研究了一些技术方案&#xff0c;现在写篇博客&#xff0c;沉淀一下。 效果 实现 通过Glide实现。虽然android官方有AnimatedImageDrawable 但是只支持API28以上&#xff0c;也就是android9.0以上的手机。兼容性太差…

怎样做好客户自助服务?

在当前高速发展的信息化时代&#xff0c;人们已经习惯了即时满足的方式。对于品牌来说&#xff0c;当客户遇到问题时&#xff0c;他们希望能够获得即时细致的解答。如果客户需要等待很长时间才能获取答案&#xff0c;他们的满意度就会降低。因此&#xff0c;企业是否提供客户自…