Пн. Окт 26th, 2026

Для создания USB CDC используем STM32Cube  v.4.1.0 и STM32Cube_FW_F4_V1.8.0

Создаем проект

  • включаем USB_OTG_FS mode Device_Only
  • RCC HSE Crystal/Ceramic Res
  • USB_DEVICE  class for FS IP  CDC
  • настраиваем  Clock Configuration
  • порты PD12-PD15 Output Push Pull

Создаем код

переносим в Eclipse, настраиваем проект.

меняем функцию CDC_Receive_FS (файл usbd_cdc_if.с) для эхо ответа

(http://habrahabr.ru/post/249395/)

[codesyntax lang=»cpp» container=»pre» blockstate=»collapsed»]

static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
    for (int i = 0; i < *Len; i++)
    UserTxBufferFS[i] = UserRxBufferFS[i];

    USBD_CDC_SetTxBuffer(&hUsbDeviceFS, &UserTxBufferFS[0], *Len);
    USBD_CDC_TransmitPacket(&hUsbDeviceFS);

    USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &UserRxBufferFS[0]);
   USBD_CDC_ReceivePacket(&hUsbDeviceFS);
   return (USBD_OK);
}

[/codesyntax]

Здесь можно взять готовый проект usb_cdc_hal.zip

 

 

От sapfir63