STM32
直播中

王磊

7年用户 1532经验值
私信 关注
[问答]

怎样去实现STM32F103C8T6的USB虚拟串口呢

怎样去实现STM32F103C8T6的USB虚拟串口呢?其实现有哪些步骤呢?

回帖(1)

刘琬婷

2021-11-18 10:04:33
  STM32F103C8T6的USB虚拟串口实现
  1.实现步骤
  电脑安装VCP_V1.4.0_Setup.exe
  在工程文件夹下新建USB文件夹,拷贝官方USB驱动库相关代码
  USB文件夹下新建CONFIG文件夹存放Virtual COM相关代码
  进入工程,新建分组USB_CORE和USB_CONFIG,按图所示添加.c文件
  
  按图所示添加头文件路径
  
  2.性能测试
  include “sys.h”
  #include “delay.h”
  #include “usart.h”
  #include “led.h”
  #include “lcd.h”
  #include “u***_lib.h”
  #include “hw_config.h”
  #include “u***_pwr.h”
  int main(void)
  {
  u16 t;
  u16 len;
  u16 times=0;
  u8 u***status=0;
  delay_init();
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  uart_init(115200);
  SystemInit();
  LED_Init();
  delay_ms(1800);
  USB_Port_Set(0);
  delay_ms(700);
  USB_Port_Set(1);
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();
  while(1)
  {
  if(u***status!=bDeviceState)
  {
  u***status=bDeviceState;
  if(u***status==CONFIGURED)
  {
  LED1=0;//DS1ÁÁ
  }else
  {
  LED1=1;//DS1Ãð
  }
  }
  if(USB_USART_RX_STA&0x8000)
  {
  len=USB_USART_RX_STA&0x3FFF;
  for(t=0;t《len;t++)
  {
  USB_USART_SendData(USB_USART_RX_BUF[t]);
  }
  u***_printf(“rnrn”);
  USB_USART_RX_STA=0;
  }else
  {
  times++;
  if(times%5000==0)
  {
  u***_printf(“”);//想打印什么都行,上下同
  u***_printf(“”);
  }
  if(times%200==0)u***_printf(“”);
  if(times%30==0)LED0=!LED0;
  delay_ms(10);
  }
  }
  }
  拷贝上面代码到主函数后,烧录,用USB将STM32连接电脑,查看设备管理器是否连接成功。若失败则为代码问题,仔细检查。然后利用一位大佬写的测速软件测速即可(代码只写了下行测试)。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分