使用STM32CubeMX把USB配置成虚拟串口(virtual com port)

本文介绍了如何使用STM32CubeMX将STM32的USB配置为虚拟串口,以实现与老旧上位机的串口通信。通过详细步骤展示了从新建工程、配置时钟、USB功能选择到生成代码的全过程,并在测试中成功实现了数据的双向传输。
摘要由CSDN通过智能技术生成

应用场景:

本次在项目中,由于对方的上位机软件比较老旧。
该软件只能通过串口通讯。而我们的设备只引出了USB口。还好STM32 的USB类型可以设置成虚拟串口。所以可以通过把USB枚举成虚拟串口(virtual com port设备)来与该上位机软件通讯。
本来是想直接移植STM32 的USB_FS库。奈何移植失败。(给跪了orz orz orz…)
又想起CubeMX也可以配置的。就用CubeMX配置工程,效果出奇的好。PC能够正常的枚举和通讯。所以趁热和大家分享分享,自己也做个记录。
以下内容就是如何一步一步通过CubeMX,把STM32的USB配置成虚拟串口的过程。
文章最后放上了本次CubeMX的工程和对应的虚拟串口代码。

配置过程:

1、点开CubeMX,新建工程,选择MCU。我用的是STM32F103VCT6。你们根据自己实际的MCU选择对应的型号以及封装格式。
在这里插入图片描述
在这里插入图片描述
2、选择系统时钟源。这边必须要配置,没配置系统时钟,不能生成正确的代码。
这里我使用的是外部晶振。(根据实际配置)
在这里插入图片描述
3、配置USB的上拉PIN脚。我这边的上拉PIN是PA13(根据实际情况配置)。注意硬件上DP要接个1.5K的上拉。用以表示高速设备以及枚举控制。
在这里插入图片描述
4、选上USB FS功能
在这里插入图片描述
5、继续“去中间层”,设置USB的识别类型。我们是虚拟口,所以选VCP设备。
在这里插入图片描述
6、配置系统时钟树参数。我的外部晶振是12M,所以要得到72M时钟,要选择倍频系数为6倍频。(晶振是8M则选择9倍频)
注意USB时钟要为48M。所以选1.5分频。
在这里插入图片描述
7、配置结束,去设置工程保存的位置。注意工具和版本。
在这里插入图片描述
8、生成工程。
在这里插入图片描述
在这里插入图片描述
9、打开工程,已经直接生成好了USB虚拟串口的代码。并可以直接编译不报错。
在这里插入图片描述

int main(void)
{
   
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init(
  • 6
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32CubeMX是一款用于STM32微控制器的图形化配置工具,它可以帮助开发者快速生代码和配置文件。其中,USB虚拟串口STM32CubeMX中的一个功能,它可以将STM32微控制器通过USB接口模拟一个串口设备,从而实现与PC机的通信。开发者可以通过配置STM32CubeMX中的USB虚拟串口功能来实现这一功能。 ### 回答2: STM32CubeMX是一种嵌入式软件开发工具,它提供了许多用于STM32系列芯片的代码生器和配置工具。其中之一是USB虚拟串口USB虚拟串口是一种通过USB接口实现串口通信的技术,它可以代替传统的RS-232串口,并提供更好的性能和易用性。 在STM32CubeMX中,使用USB虚拟串口需要进行以下步骤: 1. 在配置选项卡中,选择“USB_DEVICE”并启用“Virtual COM port” 2. 选择需要的USB模式,可选的有Device_only、Host_only、Dual_role(OTG)三种模式中的任意一种 3. 配置USART串口,例如选择USART2,并设置波特率、数据位、校验位、停止位等参数 4. 生代码并将其下载到开发板中进行验证 使用USB虚拟串口可以方便地进行PC机与STM32之间的数据传输和控制。在PC机上,可以使用任何串口通信软件,如Tera Term、Putty等,通过USB虚拟串口进行数据传输。在STM32上,可以通过编写相应的代码来实现与PC机的数据交换和处理。 此外,STM32CubeMX还提供了许多其它的功能和工具,例如中断配置、时钟设置、GPIO配置等等,使得我们在开发STM32嵌入式系统时更加快捷、高效。 ### 回答3: STM32CubeMX 是一款强大的微控制器开发工具。它可以帮助程序员快速生基于 STM32 微控制器的代码和配置文件,以及项目的初始化和实现。STM32CubeMX 还支持使用 USB 虚拟串口通信协议,这使得 STM32 微控制器可以通过 USB 端口与计算机进行通信。 USB 虚拟串口通信协议可以将通信传输的数据转换 COM 端口数据格式,从而实现和传统串口通信类似的功能。在 STM32CubeMX 中,通过配置 USB 虚拟串口 UART 来实现。在程序中,我们可以通过串口库函数调用实现 USB 虚拟串口通信。 通常情况下,使用 STM32CubeMX代码时,启用 USB 虚拟串口通信的步骤如下: 1. 打开 STM32CubeMX 工具,并选择使用的微控制器模型。 2. 在“Pinout & Configuration”选项卡下启用 USB 设备(USB OTG FS 或 USB OTG HS,取决于所选模型)。 3. 选择“Middleware”选项卡,并启用 USB_DEVICE,接着启用 CDC(虚拟串口)。 4. 修改相关的设置,如虚拟串口的波特率、数据位等。 5. 生代码并在程序中添加对串口库函数的调用。 需要注意的是,当使用 USB 虚拟串口通信时需要在计算机上安装对应的 USB 虚拟串口驱动程序,以便可以将 USB 端口识别虚拟串口。 总之,在 STM32 微控制器的开发中使用 USB 虚拟串口通信是非常常见且有用的。通过 STM32CubeMX代码的方式,我们可以在上述步骤中快速地配置 USB 虚拟串口通信,从而加快了开发速度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值