49 #include "usbd_core.h" 50 #include "usbd_desc.h" 51 #include "usbd_conf.h" 55 #define USBD_VID 0x0483 56 #define USBD_PID 0x5740 57 #define USBD_LANGID_STRING 0x409 58 #define USBD_MANUFACTURER_STRING "STMicroelectronics" 59 #define USBD_PRODUCT_FS_STRING "STM32 Virtual ComPort in FS Mode" 60 #define USBD_CONFIGURATION_FS_STRING "VCP Config" 61 #define USBD_INTERFACE_FS_STRING "VCP Interface" 72 #ifdef USB_SUPPORT_USER_STRING_DESC 73 uint8_t *USBD_VCP_USRStringDesc (USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
77 USBD_DescriptorsTypeDef VCP_Desc = {
88 #if defined ( __ICCARM__ ) 89 #pragma data_alignment=4 91 __ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_LEN_DEV_DESC]
__ALIGN_END = {
107 USBD_IDX_PRODUCT_STR,
109 USBD_MAX_NUM_CONFIGURATION
113 #if defined ( __ICCARM__ ) 114 #pragma data_alignment=4 116 __ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC]
__ALIGN_END = {
117 USB_LEN_LANGID_STR_DESC,
118 USB_DESC_TYPE_STRING,
119 LOBYTE(USBD_LANGID_STRING),
120 HIBYTE(USBD_LANGID_STRING),
125 USB_SIZ_STRING_SERIAL,
126 USB_DESC_TYPE_STRING,
129 #if defined ( __ICCARM__ ) 130 #pragma data_alignment=4 132 __ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ]
__ALIGN_END;
135 static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len);
146 *length =
sizeof(USBD_DeviceDesc);
147 return (uint8_t*)USBD_DeviceDesc;
158 *length =
sizeof(USBD_LangIDDesc);
159 return (uint8_t*)USBD_LangIDDesc;
170 USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length);
182 USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
194 *length = USB_SIZ_STRING_SERIAL;
210 USBD_GetString((uint8_t *)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
222 USBD_GetString((uint8_t *)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length);
233 uint32_t deviceserial0, deviceserial1, deviceserial2;
235 deviceserial0 = *(uint32_t*)DEVICE_ID1;
236 deviceserial1 = *(uint32_t*)DEVICE_ID2;
237 deviceserial2 = *(uint32_t*)DEVICE_ID3;
239 deviceserial0 += deviceserial2;
241 if (deviceserial0 != 0)
255 static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len)
259 for( idx = 0 ; idx < len ; idx ++)
261 if( ((value >> 28)) < 0xA )
263 pbuf[ 2* idx] = (value >> 28) +
'0';
267 pbuf[2* idx] = (value >> 28) +
'A' - 10;
272 pbuf[ 2* idx + 1] = 0;
uint8_t * USBD_VCP_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the product string descriptor.
uint8_t * USBD_VCP_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the device descriptor.
uint8_t * USBD_VCP_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the LangID string descriptor.
static void IntToUnicode(uint32_t value, uint8_t *pbuf, uint8_t len)
Convert Hex 32Bits value into char.
uint8_t * USBD_VCP_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the manufacturer string descriptor.
uint8_t * USBD_VCP_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the configuration string descriptor.
uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL]
__ALIGN_BEGIN uint8_t USBD_DeviceDesc [USB_LEN_DEV_DESC] __ALIGN_END
uint8_t * USBD_VCP_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the serial number string descriptor.
uint8_t * USBD_VCP_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
Returns the interface string descriptor.
static void Get_SerialNum(void)
Create the serial number string descriptor.