?

Log in

No account? Create an account
Костерок

eddy_em


Емельянов Эдуард Владимирович


Previous Entry Share Next Entry
USB мышь + клавиатура на STM32F0x2
Костерок
eddy_em
С рядом проблем, но таки удалось победить 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 символов поочередно, а затем сдвигать (как будто бы отпускать кнопки начинают лишь когда уже кнопок нажато, и отпуская первую нажимают очередную), очищая буфер лишь в конце, а также при повторе символа. Но это ж думать надо...

promo eddy_em january 20, 18:17 Leave a comment
Buy for 10 tokens
Пока проводил опыты с чиллером (графики позже выложу), почти закончил свою часть документации. Табличку с настройками драйверов ШД сделаю, когда буду в очередной раз разбирать прибор (забыл сразу эти данные куда-нибудь схоронить). Можно сразу скачать PDF, чтобы не клонировать себе всю репу.

  • 1
>> но -Os лучше не пользоваться

*с любопытством*

А почему?

Оно же ложит большой болт на быстродействие! С другой стороны, -O3 иногда приводит к косякам, либо сильно раздувает код. Поэтому самый идеальный вариант — -O2!

  • 1