RT-Thread Studio学习(十七)虚拟串口
一、简介
本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下实现USB虚拟串口。
硬件及开发环境如下:
- OS WIN10
- STM32F407VET6
- STM32CubeMX v6.10.0
- STM32Cube MCU Package for STM32F4 Series v1.28.1
- RT-Thread Studio v2.2.9
- RT-Thread Source Code v5.0.2
- STM32F4 chip support packages v0.2.3
二、新建RT-Thread项目并使用外部时钟
打开RT-Thread Studio软件新建基于芯片的项目,并使用外部时钟系统,具体参见《RT-Thread Studio学习(一)新建工程》。
三、启用USB设备功能
- 打开USB设备驱动框架
在RT-Thread Setting
中借助图形化配置工具打开组件中的USB设备的驱动框架,设置设备类型为Enable to use device as CDC device
,如下图所示:
- 定义USB相关的宏
在board.h
文件中使能宏定义
#define BSP_USING_USBDEVICE
- 复制USB设备初始化函数
双击RT-Thread Studio工程中的cubemx.ioc文件,设置USB OTG
在CubeMX—Project Manager—Advanced Settings 最右侧,PCD项,选择ENABLE
修改cubemx\Sconscript
,添加如下内容:
Src/usb_device.c
Src/usbd_cdc_if.c
Src/usbd_conf.c
Src/usbd_desc.c
......
path += [cwd + '/Middlewares/ST/STM32_USB_Device_Library/Core/Inc']
path += [cwd + '/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc']
再重新生成STM32CubeMX代码,将.\cubemx\Src\usbd_conf.c
中的函数HAL_PCD_MspInit
复制到board.c
的末尾。(在RT-Thread Studio 2.2.9中,不需要这一步)
void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {
0};
if(pcdHandle->Instance==USB_OTG_FS)
{
/* USER CODE BEGIN USB_OTG_FS_MspInit 0 */
/* USER CODE END USB