Здравствуйте.
Осваиваю интерфейс USB. На основе HAL сгенерировал CDC устройство. Пытаюсь передавать с МК массив длинной 256 байт. Со стороны ПК принимаю эти же 256 байт. Вот здесь и возникает проблема. На стороне ПК сначала принимаются элементы массива с 64 по 255, а уже потом с 0 по 64. Тоесть первые 64 байта каким то образом сдвигаются в самый конец.В чем тут ошибка может быть?
Использую МК STM32F103RC.
Код использую нижеприведенный. Все остальное - код куба, без каких либо изменений.
CODE
uint8_t buf[LEN], j = 0;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USB_DEVICE_Init();
uint16_t i;
while (1)
{
if (j == 0)
{
for (i = 0; i < LEN; i++)
{
buf[i] = (uint8_t)i;
}
j = 1;
}
else
{
for (i = (LEN - 1); i >= 0; i--)
{
buf[i] = (uint8_t)i;
}
j = 0;
}
buf[0] = 0x01;
buf[1] = 0x02;
buf[LEN - 2] = 0x03;
buf[LEN - 1] = 0x04;
HAL_Delay(1000);
while (CDC_Transmit_FS(buf, LEN) == 1);
}
}
Сообщение отредактировал IgorKossak - May 19 2016, 19:22
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!