il-2 (30.12.2014 14:14, просмотров: 615) ответил Apтём на Может это перепутывание байтов - требования стандарта USB? В Ethernet-е к примеру байты тоже в big endian передаются, может и в USB так.
Нет, не так. И вообще эта проблема к USB не имеет отношения - принятые данные могут быть хоть в каком формате, но складывать в переменные их надо в соответствии с Endianless процессора (тем более что в USB и у STM32 используется little endian). Это просто тупой косяк, который они сделали и не потрудились исправить. А в тех местах где косяк проявлялся они наложили "костыли" вроде такого (еще не постеснялись указать это в комментарии):
// usb_core.c
#define StatusInfo0 StatusInfo.bw.bb1 /* Reverse bb0 & bb1 */
#define StatusInfo1 StatusInfo.bw.bb0