Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Categories:

USB мышь + клавиатура на STM32F0x2

С рядом проблем, но таки удалось победить USB HID на STM32. С оптимизацией -O2 прошивка занимает 4.8кБ, оптимизация -Os уменьшает ее до 4.1кБ (но -Os лучше не пользоваться).
Как и в старом примере под STM32F103 с использованием opencm3 просто эмулируется составное HID-устройство: мышь + клавиатура. Командой 'M' в терминале можно сдвинуть курсор мыши, а командой 'K' — вывести на печать фразу "Hello!". Теперь-то моя душенька довольна и можно заняться написанием libMMPP — библиотеки для управления фотометром (Тимур все-таки согласился с тем, что нужно реализовать клиент-серверную архитектуру управления прибором, а чтобы не дергать постоянно внешние утилиты, нужно реализовать все функции MMPP_control и HSFW_manage в отдельной библиотеке).
UPD. Разобрался с косяками и устранил их. Дескрипторы пока не менял — и так нормально работает, но можно при желании заменить на дескрипторы реального устройства такого типа (хотел из дома взять радиоприемник от пары мыша+клавиатура, но забыл).
В прошлой реализации после каждого кода клавиши я посылал код ее отпускания, но теперь сделал продвинутую версию: код отпускания посылается лишь если повторно ту же клавишу нужно нажать, а также в конце строки. Получилось 950 символов в секунду — почти предел для такого способа (с учетом, что каждый пакет идет с интервалом в 1мс). Можно было бы еще круче сделать: забивать все 6 символов поочередно, а затем сдвигать (как будто бы отпускать кнопки начинают лишь когда уже кнопок нажато, и отпуская первую нажимают очередную), очищая буфер лишь в конце, а также при повторе символа. Но это ж думать надо...
Tags: stm32, всячина
Subscribe

  • А что, в С так нельзя?

    Пытаюсь передать в функцию цвет как массив. Функция такая: void Pattern_draw3(Img3 *img, Pattern *p, int xul, int yul, uint8_t colr[3]); И…

  • DHT22/DHT11 на STM32F103

    Добил шайтана! Сначала ожидал, что нужно будет полноценным захватом ШИМ пользоваться, но т.к. в протоколе неинформативная часть имеет постоянную…

  • Свеженькие железячки

    Получил сегодня с али ожидаемые железки, в т.ч. для восстановления моей файлопомойки. Во-первых, это блок питания на 16.8В, который я брал для…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 2 comments