stm32 USB CDC类虚拟串口初体验

news2024/9/20 16:58:33

1. 目标

本文介绍CubeMX生成 USB CDC类虚拟串口工程的操作步骤。

2. 配置流程

  • 时钟配置

    • usb外设需要48M时钟输入
    • stm32405使用外部时钟源HSE,否则配不出来48M时钟
    • stm32h750内部有一个48M时钟
    • stm32f405时钟配置
      在这里插入图片描述
    • stm32h750时钟配置
      在这里插入图片描述
  • Connectivity ->USB_OTG_FS 和 Connectivity ->USB_OTG_FS 配置

    • stm32 usb内置了一个全速PHY,如果要使用内置PHY则选中 Connectivity ->USB_OTG_FS
    • stm32 usb同时引出一个ULPI接口,可以外接高速PHY,如果要使用外部高速PHY则选中 Connectivity ->USB_OTG_HS
    • PC机作为主机 选择 Device_Only
    • USB_OTG_FS 和 USB_OTG_HS 可以同时配置
      在这里插入图片描述
      在这里插入图片描述
  • Middleware and Software Packs ->USB_DEVICE配置

    • 如图,选择cdc设备
      在这里插入图片描述
  • 配置结束,生成工程。

3. 测试

  • 将代码下载进板子,插入电脑,即可看见枚举出两个com口
    在这里插入图片描述
  • 用户接口说明
    usbd_cdc_if.h 和 usbd_cdc_if.c 提供用户接口
函数说明
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)全速设备,向主机发送内容,通过批量IN端点发送
uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)高速设备,向主机发送内容,通过批量IN端点发送
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)全速设备,接收到主机发送的内容时会调用这个函数,通过批量OUT端点发接收
static int8_t CDC_Receive_HS(uint8_t* Buf, uint32_t *Len)高速设备,接收到主机发送的内容时会调用这个函数,通过批量OUT端点发接收
static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)全速设备,CDC类请求处理函数,控制传输,例如:可以设置或读取线路编码,包括波特率、停止位、校验位和数据位
static int8_t CDC_Control_HS(uint8_t cmd, uint8_t* pbuf, uint16_t length)高速设备,CDC类请求处理函数,控制传输,例如:可以设置或读取线路编码,包括波特率、停止位、校验位和数据位
  • 回环测试
    在接收函数CDC_Receive_FS中将接收到的数据通过CDC_Transmit_FS发送,代码如下:
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 6 */
  CDC_Transmit_FS(Buf, *Len);
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  return (USBD_OK);
  /* USER CODE END 6 */
}

请添加图片描述

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

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

相关文章

windows obdc配置

进入控制面板: 进入管理工具:

MAC在网络结构中的位置:深入解析

MAC在网络结构中的位置:深入解析 在网络通信的世界里,每一层都扮演着至关重要的角色。今天,我们将聚焦于一个经常被提到但可能不太被理解的概念:MAC(Media Access Control,媒体访问控制)。我们…

智慧产业应用实训实践基地-信息类专业实践实验室-嵌入式、物联网、移动互联网、云计算、大数据、人工智能、区块链实训室

智慧产业实践基地面向信息类专业群,以智慧灯杆、智慧交通、智慧设施在智慧产业中的实际实践为项目原型,软硬件开源、开放,海量的技术资料和实训课程。整个系统运用了嵌入式、物联网、移动互联网、云计算、大数据、人工智能、区块链等综合交叉…

three-tile 一个开源的轻量级三维瓦片库

three-tile 介绍 three-tile 是一个开源的轻量级三维瓦片库,它基于threejs使用typescript开发,提供一个三维地形模型,能轻松给你的应用增加三维瓦片地图。 源码:https://github.com/sxguojf/three-tile 示例:https:/…

音频demo:将PCM数据与alaw、mulaw、g711数据的相互转换

1、README 前言 (截图来源:https://blog.csdn.net/u014470361/article/details/88837776) 我的理解: 首先需要知道的是u-law/a-law是用于脉冲编码的压缩/解压缩算法。而G.711是指在8KHz采样率(单声道)中,使用的u-law或…

uni-app 封装http请求

1.引言 前面一篇文章写了使用Pinia进行全局状态管理。 这篇文章主要介绍一下封装http请求,发送数据请求到服务端进行数据的获取。 感谢: 1.yudao-mall-uniapp: 芋道商城,基于 Vue Uniapp 实现,支持分销、拼团、砍价、秒杀、优…

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友,有可能会被各式各样的黄金交易品种带得眼花缭乱,其实各品种虽然都以黄金作为投资标的物,但是也是各有不同的,下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前,我们要搞清楚…

计算机毕业设计Django+Vue.js考研推荐系统 考研分数线预测 中公考研爬虫 混合神经网络推荐算法 考研可视化 机器学习 深度学习 大数据毕业设计

Python数据分析与可视化期末项目报告 项目名称: 考研推荐系统数据分析与可视化 学 号: 姓 名: …

Spire.PDF for .NET【文档操作】演示:以特在 C# 中创建 PDF/A-1a 文件

PDF/A-1 标准为 PDF 文件指定了两个符合性级别:PDF/A-1a(符合 A 级)和 PDF/A-1b(符合 B 级)。使用 Spire.PDF,您可以轻松创建 PDF/A-1a 和 PDF/A-1b 文件。本文演示了如何使用 Spire.PDF 创建 PDF/A-1a 文件…

MySQL第三次练习

作业三 一 先创建DB abc,创建table student 1、插入一条记录 2、添加多条记录 3、添加部分记录 4、加0.5 5、删除成绩为空的记录 二 1、创建一个用户test1使他只能本地登录拥有查询student表的权限。 2、查询用户test1的权限。 3、删除用户test1. 全在一张图上…

刀客网源码账号合租平台

最新租号平台系统源码,支持单独租用或合租使用 这是一款租号平台源码,采用常见的租号模式。 平台的主要功能如下: 支持单独租用或采用合租模式,采用易支付通用接口进行支付,添加邀请返利功能,以便站长更好…

ubuntu22.04搭建mysql5.7

1.1 下载mysql安装包 MySQL下载地址:MySQL :: Download MySQL Community Server (Archived Versions) #下载wget https://cdn.mysql.com/archives/mysql-5.7/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar#解压tar -xvf ./mysql-server_5.7.29-1ubuntu18…

排序学习笔记

1.什么是排序 1.1排序的概念 概念:排序的概念其实非常简单,本质上就是将一堆记录按照从大到小(降序),从小到大(升序)来进行排序。我们日常生活中每天都有着不同的排序,比如年龄大小排序,身高的排序等等。 稳定性&am…

如何把已经上传到gitlab的代码或者文件夹从git上删掉

有小伙伴不小心把缓存文件上传到了git,跑来问我,要怎么把这些文件给删掉,这里一共有两种方式, 先说第一种,通过命令删除,终端进入存在这个缓存文件的目录,执行命令ls,可以看到确实有…

STM32学习历程(day5)

EXTI外部中断 中断 中断就是在主程序运行过程中 出现了特定的中断触发条件(中断源),CPU会暂停当前的程序,去处理中断程序 处理完会返回被暂停的位置 继续运行原来的程序。 中断优先级 当有多个中断源同时申请中断时 CPU会根据…

如何安全隐藏IP地址,防止网络攻击?

当您想在互联网上保持隐私或匿名时,您应该做的第一件事就是隐藏您的 IP 地址。您的 IP 地址很容易被追踪到您,并被用来了解您的位置。下面的文章将教您如何隐藏自己,不让任何试图跟踪您的活动的人发现。 什么是 IP 地址? 首先&am…

初中生物知识点总结(人教版)

第一章 认识生物 一、 生物的特征: 1. 生物的生活需要营养 2. 生物能进行呼吸 3. 生物能排出身体内产生的废物 4. 生物能对外界的刺激做出反应 5. 生物能生长和繁殖 除病毒以外,生物都是由细胞构…

python中getattr/setattr/hasattr/delattr函数都是干什么的?

目录 1、getattr:动态获取属性 🔍 1.1 动态获取属性 1.2 默认值处理技巧 1.3 实战案例:配置文件动态加载 2、setattr:动态设置属性 🛠 2.1 修改对象属性 2.2 新增属性场景 2.3 应用场景:类的动态配置…

零基础也能成为产品册设计高手

​在当今数字化时代,产品册设计已成为企业营销的重要手段之一。过去,人们认为只有专业人士才能设计出精美的产品册,然而,随着设计工具的普及和在线学习资源的丰富,零基础的你也能成为产品册设计高手。本文将带你走进这…

一文清晰了解HTML

有这样一个txt记事本文件和一张图片&#xff1a; txt文本内容是这样的&#xff1a; <html><head><title>HTML学习</title></head><body><h1>hello HTML</h1><img src"高清修复.png"/></body> </html…