STM32F1与STM32CubeIDE快速入门USB虚拟串口CDC
STM32F1与STM32CubeIDE快速入门-USB虚拟串口(CDC)
USB虚拟串口(CDC)
文章目录
STM32F1 USB外设实现了USB2.0全速总线和APB1总线间的接口。USB 提供的串行接口,具有以下特点:
- 1)简单性和灵活性(即插即用);
- 2)双向性;
- 3)提高速度;
- 4)低成本。
STM32F103自带的USB符合USB2.0规范。但是STM32F1的USB只支持作为设备,不能作为主机。
本文将详细介绍如何使用STM32CubeIDE中如何配置USB虚拟串口。
1、USB虚拟串口配置
STM32CubeIDE创建工程、系统配置、调试配置,在这里不再做介绍,请参考:
- STM32F1与STM32CubeIDE快速入门-开发环境搭建
- STM32F1与STM32CubeIDE快速入门-GPIO概述与点亮LED
- STM32F1与STM32CubeIDE快速入门-USART/UART串口通信
1)开启USB功能

2)配置USB时钟

3)USB上拉引脚配置
STM32F1的USB符合USB2.0规范,本实例使用的USB硬件接线如下,其中引脚PC13作为USB的上拉引脚,需要配置。

上拉引脚配置如下:

注意:如果没有配置上拉引脚,上位机将不会识别USB设备。请根据所使用的开发板或设计需求配置。
4)配置USB串口功能

5)配置系统堆栈
默认堆栈大小可能不能满足USB虚拟串口使用需求,因此需要调整。设置如下:

最后,保存配置,并生成代码。

2、USB虚拟串口驱动实现
下面实现USB虚拟串口回环测试功能。
1)虚拟串口回环测试功能实现
文件usbd_cdc_if_.h和usbd_cdc_if.c文件为USB虚拟串口实现代码。实现虚拟串口回环测试功能,只需要在usbd_cdc_if.c文件中的CDC_Receive_FS函数中,添加如下代码:
1 | static int8\_t CDC\_Receive\_FS(uint8\_t\* Buf, uint32\_t \*Len) |
在CDC_Receive_FS函数添加:
1 | CDC\_Transmit\_FS(Buf, \*Len); |
即,将接收到的数据,直接发送回去。
2)主程序
在main.c文件中添加如下代码:
1 | /\* Private includes ----------------------------------------------------------\*/ |
注意:在USB设备初始化完成后,必须将USB上拉引脚设置为低电平,否则上位将无法识别USB。
1 | // USB上拉引脚,设置低电平,开启虚拟串口 |
3、运行结果

4、STM32F1与STM32CubeIDE系列文章
4.1 STM32F1与STM32CubeIDE快速入门
- 4.1.1 STM32F1与STM32CubeIDE快速入门-开发环境搭建
- 4.1.2 STM32F1与STM32CubeIDE快速入门-STM32F1微控制器概述
- 4.1.3 STM32F1与STM32CubeIDE快速入门-GPIO概述与点亮LED
- 4.1.4 STM32F1与STM32CubeIDE快速入门-按键与LED控制
- 4.1.5 STM32F1与STM32CubeIDE快速入门-中断、NVIC与EXTI概述 |
- 4.1.6 STM32F1与STM32CubeIDE快速入门-外部中断配置与功能实现
- 4.1.7 STM32F1与STM32CubeIDE快速入门-USART/UART串口通信
- 4.1.8 STM32F1与STM32CubeIDE快速入门-定时器(Timer)概述
- 4.1.9 STM32F1与STM32CubeIDE快速入门-定时器定时模式
- 4.1.10 STM32F1与STM32CubeIDE快速入门-定时器计数模式
- 4.1.11 STM32F1与STM32CubeIDE快速入门-定时器PWM模式
- 4.1.12 STM32F1与STM32CubeIDE快速入门-定时器编码(Encoder)模式
- 4.1.13 STM32F1与STM32CubeIDE快速入门-定时器输入捕获模式(Input Capture Mode)实现频率计数
- 4.1.14 STM32F1与STM32CubeIDE快速入门-DMA概述
- 4.1.15 STM32F1与STM32CubeIDE快速入门-USART通过DMA进行数据接收与发送
- 4.1.16 STM32F1与STM32CubeIDE快速入门-ADC概述
- 4.1.17 STM32F1与STM32CubeIDE快速入门-ADC轮询方式实现PWM调光器
- 4.1.18 STM32F1与STM32CubeIDE快速入门-ADC中断方式实现PWM调光器
- 4.1.19 STM32F1与STM32CubeIDE快速入门-ADC通过DMA方式与PWM实现调光器
- 4.1.20 STM32F1与STM32CubeIDE快速入门-DAC概述
- 4.1.21 STM32F1与STM32CubeIDE快速入门-SPI概述
- 4.1.22 STM32F1与STM32CubeIDE快速入门-M25P16串行闪存驱动
- 4.1.23 STM32F1与STM32CubeIDE快速入门-I2C概述
- 4.1.24 STM32F1与STM32CubeIDE快速入门-I2C驱动LCD1602显示屏(基于PCF8574)
- 4.1.25 STM32F1与STM32CubeIDE快速入门-独立看门狗(IWDG)
- 4.1.26 STM32F1与STM32CubeIDE快速入门-OLED-SSD1306-I2C驱动
- 4.1.27 STM32F1与STM32CubeIDE快速入门-SD卡驱动-SDIO+FatFs
4.2 STM32F1与STM32CubeIDE编程实例
- 4.2.1 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2配置(基于FreeRTOS)
- 4.2.2 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-线程管理
- 4.2.3 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS v2-延时
- 4.2.4 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-定时器管理
- 4.2.5 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-互斥(Mutex)管理
- 4.2.6 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-信号量(Semaphore)
- 4.2.7 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-消息队列
- 4.2.8 STM32F1与STM32CubeIDE编程实例-CMSIS-RTOS V2-事件标志(Event Flags)
文章来源: https://iotsmart.blog.csdn.net/article/details/124766631
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋意寒!
评论