stm32F446re usb cdc virtual com port not showing up as the usbd_desc.c
Hey everyone,
I'm learning about USB CDC and soon USB HID.
I think I successfully program the stm32 as a cdc device because I can connect to it, and I can read and write serial commands through a terminal. I can even catch the serial buffer through the CDC Receive function. I used cubemx and middleware for generating the usb cdc
But my question is, on device manager, the stm32 cdc does not show up as "stm32 virtual comport" but as a regular Usb serial device. This happens to in windows 10 and 11. Also the PID and VID numbers are different from the usbd_desc.c. any help would be greatly appreciate it.
im not sure if this is needed, but this is what I have for cdc control fs
static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)
{
/* USER CODE BEGIN 5 */
uint8_t tempbuf[7] = {0,0,0,0,0,0,0};
switch(cmd)
{
case CDC_SEND_ENCAPSULATED_COMMAND:
break;
case CDC_GET_ENCAPSULATED_RESPONSE:
break;
case CDC_SET_COMM_FEATURE:
break;
case CDC_GET_COMM_FEATURE:
break;
case CDC_CLEAR_COMM_FEATURE:
break;
/*******************************************************************************/
/* Line Coding Structure */
/*-----------------------------------------------------------------------------*/
/* Offset | Field | Size | Value | Description */
/* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/
/* 4 | bCharFormat | 1 | Number | Stop bits */
/* 0 - 1 Stop bit */
/* 1 - 1.5 Stop bits */
/* 2 - 2 Stop bits */
/* 5 | bParityType | 1 | Number | Parity */
/* 0 - None */
/* 1 - Odd */
/* 2 - Even */
/* 3 - Mark */
/* 4 - Space */
/* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */
/*******************************************************************************/
case CDC_SET_LINE_CODING:
temp[0] = pbuf[0];
temp[1] = pbuf[1];
temp[2] = pbuf[2];
temp[3] = pbuf[3];
temp[4] = pbuf[4];
temp[5] = pbuf[5];
temp[6] = pbuf[6];
break;
case CDC_GET_LINE_CODING:
pbuf[0] = temp[0];
pbuf[1] = temp[1];
pbuf[2] = temp[2];
pbuf[3] = temp[3];
pbuf[4] = temp[4];
pbuf[5] = temp[5];
pbuf[6] = temp[6];
break;
case CDC_SET_CONTROL_LINE_STATE:
break;
case CDC_SEND_BREAK:
break;
default:
break;
}
return (USBD_OK);
/* USER CODE END 5 */
}
Also, would it be possible to run this as a HID as well? I was thinking maybe I can press a button that can switch between cdc and HID.
