本项目实现STM32F103芯片双串口同时通过USB接口通信的功能,适用于需要多路数据传输的应用场景。
STM32F103 使用 CDC 类实现 USB 转双串口功能。当设备插入电脑后,会自动创建两个虚拟串口。如果系统提示找不到驱动程序,请指定到 inf 文件夹路径即可解决。
相比 ST 官方提供的仅有一路串口的示例代码,此方法更加简便实用。以下是所用 IO 的定义:
- 串口1:PA9 和 PA10
```c
const GPIO_InitTypeDef TX1_pin = {GPIO_Pin_9, GPIO_Speed_50MHz, GPIO_Mode_AF_PP};
const GPIO_InitTypeDef RX1_pin = {GPIO_Pin_10, GPIO_Speed_50MHz, GPIO_Mode_IN_FLOATING};
```
- 串口2:PA2 和 PA3
```c
const GPIO_InitTypeDef TX2_pin = {GPIO_Pin_2, GPIO_Speed_50MHz, GPIO_Mode_AF_PP};
const GPIO_InitTypeDef RX2_pin = {GPIO_Pin_3, GPIO_Speed_50MHz, GPIO_Mode_IN_FLOATING};
```
- USB 使能脚:PC15
```c
#define USB_DISCONNECT GPIOC
#define USB_DISCONNECT_PIN GPIO_Pin_15 //原定义为GPIO_Pin_12
#define RCC_APB2Periph_GPIO_DISCONNECT RCC_APB2Periph_GPIOC
```
根据实际硬件配置自行修改上述宏定义,找到对应的代码位置并进行更改后重新编译。