Приветствую коллеги!
Рассматриваю пример:
STM32_USB-Host-Device_Lib_V2.1.0\Project\USB_Device_Examples\VCP\
Возник вопрос по передаче данных через виртуальный COM порт.
Функция VCP_DataTx определена с двумя аргументами, которые в ее теле не используются, вместо этого данные подставляются из USART_ReceiveData(***).
Будет ли корректно, если я перепишу тело функции VCP_DataTx и занесу в APP_Rx_Buffer буфер Buf, длинной Len, увеличив APP_Rx_ptr_in на Len?
Вопрос возник потому, что у меня это работает если входной буфер < или > 64 байт, если ровно 64, ничего в ПК не вижу, иначе все приходит как нужно. Тоже самое актуально для исходящих пакетов, размер которых кратен 64, не принимаются в ПК.

Код
/**
  * @brief  VCP_DataTx
  *         CDC received data to be send over USB IN endpoint are managed in
  *         this function.
  * @param  Buf: Buffer of data to be sent
  * @param  Len: Number of data to be sent (in bytes)
  * @retval Result of the opeartion: USBD_OK if all operations are OK else VCP_FAIL
  */
static uint16_t VCP_DataTx (uint8_t* Buf, uint32_t Len)
{
  if (linecoding.datatype == 7)
  {
    APP_Rx_Buffer[APP_Rx_ptr_in] = USART_ReceiveData(EVAL_COM1) & 0x7F;
  }
  else if (linecoding.datatype == 8)
  {
    APP_Rx_Buffer[APP_Rx_ptr_in] = USART_ReceiveData(EVAL_COM1);
  }
  
  APP_Rx_ptr_in++;
  
  /* To avoid buffer overflow */
  if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
  {
    APP_Rx_ptr_in = 0;
  }  
  
  return USBD_OK;
}