STM32cube USB VCP 没有出现在 Windows 10

STM32cube USB VCP doesn't appear on Windows 10

我正在尝试了解如何在基于 STM32F103 的 Blue Pill 开发板上启用 USB VCP 功能。在下面Shawn Hymell's guide and attempting to troubleshoot with , I currently have the following (minified) main.c: (Git Gist with full file)

#include "main.h"
#include "usb_device.h"
#include <string.h>

int main(void) {
  char msg[50];
  uint8_t state = 0;

  HAL_StatusTypeDef ret_status;
  MX_USB_DEVICE_Init();

  sprintf(msg, "Restart!\n");
  ret_status = HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);
  HAL_Delay(1000);

  while (1) {
      HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, state ? GPIO_PIN_RESET : GPIO_PIN_SET);
      sprintf(msg, "Hello World! LED State: %d\n", state);
      ret_status = HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);
      ret_status = CDC_Transmit_FS((uint8_t*)msg, strlen(msg));

      state = state == 1 ? 0 : 1;
      HAL_Delay(500);
  }
}

我可以看出程序是 (otherwise) 运行 因为 UART 适配器显示 char msg 正在以正确的间隔输出并且开发板的 PC13 LED 正在闪烁。然而,我的 Windows 10 电脑甚至无法识别插入的 USB 设备,只显示 FTDI 适配器的 COM 端口和我的 STLink v2:

截至目前,我已经尝试了 中的以下潜在修复:

case CDC_SET_LINE_CODING:
  tempbuf[0]=pbuf[0];
  tempbuf[1]=pbuf[1];
  tempbuf[2]=pbuf[2];
  tempbuf[3]=pbuf[3];
  tempbuf[4]=pbuf[4];
  tempbuf[5]=pbuf[5];
  tempbuf[6]=pbuf[6];
  break;
case CDC_GET_LINE_CODING:
  pbuf[0]=tempbuf[0];
  pbuf[1]=tempbuf[1];
  pbuf[2]=tempbuf[2];
  pbuf[3]=tempbuf[3];
  pbuf[4]=tempbuf[4];
  pbuf[5]=tempbuf[5];
  pbuf[6]=tempbuf[6];
  break;

有没有其他人见过这样的事情?我不确定接下来要尝试什么。

其实我的问题远比我想象的简单。以我无限的智慧,我决定在我以前用于 CANbus 测试的面包板上尝试这个,而不断开 CAN 电路。

(ref)

这永远不会奏效,因为我一直在尝试使用的 CANbus 引脚(并保持插入状态)与 USB 端口共享功能。在我拔下连接到 PA11PA12 的面包板电线后,VCP 立即出现并开始工作。我觉得很傻,但现在松了一口气。