You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下Nucleo F103RB虚拟串口无法正常显示求助

Nucleo F103RB USB虚拟串口不显示的解决办法

先查硬件连接,别插错端口!

  • Nucleo F103RB有两个USB口:CN9是STLink调试/自带VCP口,CN10才是USB OTG FS的目标VCP口,必须用Micro-USB线插CN10连电脑,插错端口肯定出不来新设备。
  • 确认CN10能供电:如果Cube里开了VBUS检测,要保证CN10的VBUS引脚有5V输入;没开的话,直接插电脑USB口一般就能供电。

固件配置要到位

  • 检查USB_DEVICE参数:
    打开CubeIDE的配置界面,进USB_DEVICE的Device Descriptor,确保idVendor是0x0483,idProduct是0x5740——这是ST官方VCP的标准ID,改了的话电脑认不出来。
  • 时钟必须是48MHz:
    F1系列USB外设强制要求48MHz时钟,进Clock Configuration页面,确认PLL倍频是9(8MHz晶振×9=72MHz),USB预分频器设为1.5,这样72/1.5刚好是48MHz。时钟不对,USB根本没法完成枚举。

代码补全启动逻辑

  • 默认生成的代码只初始化了USB设备,没启动枚举流程,要在main.c里加两行:
    在MX_USB_DEVICE_Init()之后,添上:
    HAL_PWREx_EnableUSBVoltageDetector(); // F1系列必须开启USB电压检测
    MX_USB_DEVICE_Start();
    
  • 要测试发数据的话,主循环里加这段:
    uint8_t test_data[] = "USB VCP test!\r\n";
    CDC_Transmit_FS(test_data, sizeof(test_data)-1);
    HAL_Delay(1000);
    
    注意CDC_Transmit_FS是Cube自动生成的函数,要是usbd_cdc_if.c里没有,说明你配置VCP的时候漏了关键步骤。

驱动和系统设置修正

  • 卸载旧驱动重装:设备管理器里找到“STMicroelectronics STLink Virtual COM Port”,右键卸载并勾选“删除此设备的驱动程序软件”,然后重新插CN10的USB线,Windows会自动安装正确的VCP驱动,这时就能看到新的虚拟串口了。
  • 关闭USB休眠:设备管理器里找到USB根集线器,在属性里取消“允许计算机关闭此设备以节约电源”,避免USB设备休眠导致枚举失败。

调试排查最后一步

  • 用CubeIDE调试,在MX_USB_DEVICE_Start()处加断点,确认函数没有返回错误。
  • 检查GPIO配置:PA11(DM)和PA12(DP)必须设为Alternate Function Push-Pull,速度拉到High Speed,要是手动改过GPIO模式,改回默认配置就行。

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:02:47