Цитата(www... @ Apr 5 2016, 09:32)

Компилятор Keil? Начальный код кубе генерили?
Если да, установите Heap_Size 0x400
IAR. нет не в кубе, код взят из библиотеки STM32F401-Discovery_FW_V1.0.0. стоит cstack = 0x400, heap = 0x1000
Цитата
встаньте на отладку на то место,где происходит прием control ep0 в фазе setup
Не попадает туда код. Вот нашел отличия между рабочим кодом из демо проекта с моим.
Последовательность усб-ишных прерываний в процессоре.... в рабочем демо
Сначало происходит прерывание по флагу OTG_FS_GINTSTS.USBRST (usb rerset)
далее OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.RXFLVL
OTG_FS_GINTSTS.RXFLVL
OTG_FS_GINTSTS.OEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.RXFLVL
....
и т.д. Нормальный обмен
Какие прерывания и в какой последовательности срабатывают при подключении усб к компу в нерабочем коде:
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.ESUSP
что не нравиться хосту? почему он постоянно ресетит девайс? Посмотрел что в обработчике на енумДан.... и в том и в том проекте один т тот же код.... вычитывает регистр GUSBCFG, выставлает в его поле usbtrdtim = 5, и записывает обратно в GUSBCFG. И там и там значения регистра одинаковы. Почему хост после опять запрашивает ресет?
OTG_FS_GINTSTS.USBSUSP
Цитата
должно сильно поспособствовать сравнение рабочего и нерабочего вариантов каким-нибудь сниффером. Я крайний раз пользовался "free usb analyzer". Не очень удобно, зато совесть чиста :-)
А как оно работает? Можно наверно под\смотреть обмен с распознанным устройством. А если устройство не распознано и его нет в дерево в окошке Devices..... как подсмотреть обмен компьютера с новым подключаемым нераспознанным устройством?