Поиск

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 символов поочередно, а затем сдвигать (как будто бы отпускать кнопки начинают лишь когда уже кнопок нажато, и отпуская первую нажимают очередную), очищая буфер лишь в конце, а также при повторе символа. Но это ж думать надо… eddy_em.livejournal.com

Добавить комментарий