Перейти к содержанию
    

STM32F4-Discovery.

В проекте использую либу TM_USB_HID_DEVICE для создания своего hid-девайса.

 

После заливки поведение следующее:

1. Сразу после заливки проект работает как надо: видится в винде, обменивается данными с прогой. После передерга питания/нажатия кнопки RESET все так же хорошо.

2. Но если не выключая питание платы перевоткнуть USB, то второй раз девайс уже не определяется: винда пишет что устройство USB не опознано.

 

Что делать - не знаю, уже прям всю голову сломал.

Помогите - куда копать?

 

Если нужны подробности - пишите какие именно, дам на посмотреть.

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам надо сделать корректную переинициализацию USB и всех потрохов, если устройство было отключено от USB.

Я чинил родственную проблему в хосте флэшек - если флэшку выдернуть и вставить по-новой, то она уже не опознаётся. Потому что ребята недопилили деинициализацию....

У Вас, видимо, что-то родственное. Я, правда, использовал СТ-шные либы, а не ТМ, но они наверное, друг у друга переписывают ...

Детально подсказать не могу, извините. Девайсы я не делал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага понятно, ну я на что-то подобное и грешил.

Буду благодарен, если подскажете куда смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что делать - не знаю, уже прям всю голову сломал.

Помогите - куда копать?

 

К плате дискавери Ф4 идет пример работы с хид-"мышкой", с акселерометром, там все уже сделано, возьмите за основу и доработайте, как нужно...

В том примере используются либы SPL, не куба!

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался кажется

 

было вот так:

    while (1) {
            mm_process_packets();
    }

 

сделал вот так:

    while (1) {
        if(TM_USB_HIDDEVICE_GetStatus() == TM_USB_HIDDEVICE_Status_Connected)
            mm_process_packets();
        
        if(TM_USB_HIDDEVICE_GetStatus() == TM_USB_HIDDEVICE_Status_Disconnected)
        {
            TM_USB_HIDDEVICE_Init();
            Delayms(1000);
        }
    }

 

Вроде работает.

Всем спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...