Комментарии 6
Спасибо большое за статью, очень интересно!
Ко мне уже едет набор для сборки ZMR250, но я поленился и заказал готовый USB-переходник для подключения аппаратуры. Честно говоря, мне даже не пришло в голову, что его можно сделать самостоятельно.
Ко мне уже едет набор для сборки ZMR250, но я поленился и заказал готовый USB-переходник для подключения аппаратуры. Честно говоря, мне даже не пришло в голову, что его можно сделать самостоятельно.
+1
Спасибо большоe за проект!
Как раз думал чем сегодня заняться + STM32F3-Discovery под рукой. Залил Adapter.hex черeз STM32 ST-LINK Utility подключился к Turnigy 9X и даже успешно полетал! :)
Как раз думал чем сегодня заняться + STM32F3-Discovery под рукой. Залил Adapter.hex черeз STM32 ST-LINK Utility подключился к Turnigy 9X и даже успешно полетал! :)
+1
Ага, USB HID! Отличненько, прикопал до времени, когда понадобится. За исходники на отдельное спасибо.
+1
Спасибо за статью. Отличный проект выходного дня для начинающих ковырять STM32, вроде меня.
По образцу сделал такой же проект для STM32F103C8T6, но уткнулся в интересную проблему — может кто-то поопытнее поможет решить?
В F103 выводы таймера TIM3 не толерантны к 5В, поэтому использовал 1й канал таймера TIM1. Перенес куски кода с USB дескриптором, логикой обработки прерываний, проверил что везде вместо TIM3 используется TIM1… Не работает!
Отладчик показывает что не вызывается обработчик прерывания таймера. Смотрю в регистр TIM1_DIER: бит разрешения прерывания СС1IE установлен, источник PPM сигнала подключен, но обработчик не вызывается! От безысходности ткнул в бит разрешения прерывания по событию Trigger (TIE), запустил на выполнение, — и все чудесным образом завертелось, обработчик стал вызываться.
Кто-то может объяснить почему так? Или хотя бы какой раздел документации копать? :)
По образцу сделал такой же проект для STM32F103C8T6, но уткнулся в интересную проблему — может кто-то поопытнее поможет решить?
В F103 выводы таймера TIM3 не толерантны к 5В, поэтому использовал 1й канал таймера TIM1. Перенес куски кода с USB дескриптором, логикой обработки прерываний, проверил что везде вместо TIM3 используется TIM1… Не работает!
Отладчик показывает что не вызывается обработчик прерывания таймера. Смотрю в регистр TIM1_DIER: бит разрешения прерывания СС1IE установлен, источник PPM сигнала подключен, но обработчик не вызывается! От безысходности ткнул в бит разрешения прерывания по событию Trigger (TIE), запустил на выполнение, — и все чудесным образом завертелось, обработчик стал вызываться.
Кто-то может объяснить почему так? Или хотя бы какой раздел документации копать? :)
0
Разобрался сам. Проблема была в неправильной настройке таймера в Cube MX: нужно было включить обработчик прерывания «Capture and Compare» вместо «Trigger and Commutation» во вкладке «NVIC settings» в окне конфигурации таймера:
Портированный на STM32F103C8 проект для CooCox и CubeMX лежит здесь
Портированный на STM32F103C8 проект для CooCox и CubeMX лежит здесь
0
Авиамодельный пульт больше похож по своему функциональному назначению на геймпад, поэтому в дальнейшем я иногда буду использовать термин «геймпад».
И дальше по тексту почти везде написано «джойстик». :)
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PPM-to-USB адаптер на STM32F3Discovery, или Подключаем авиамодельный пульт к компьютеру как HID-джойстик с STM32Cube