Микропроцессоры и микроконтроллеры

 
 
 
«People who think they know everything really annoy those of us who know we don't.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: JAVA и STM32 - курс экспресс-программирования с MicroEJ :: JAVA и STM32 - курс экспресс-программирования с MicroEJ. Часть третья

JAVA и STM32 - курс экспресс-программирования с MicroEJ. Часть третья

Во очередной статье, посвященной платформе ButterflyOS (MicroEJ - JAVA на STM32), будут представлены основные механизмы, отвечающие за обработку входов и выходов на языке JAVA, часто используемые при создании аппаратной базы пользовательских интерфейсов. Будет создан примерный проект на Java для микроконтроллера STM32 из набора STM32F429I-DISCO, содержащий поддержку кнопки и светодиодов. В конце будет показан нижний уровень платформы в C.

Поддержка ввода


Устройства ввода являются неотъемлемой частью микропроцессорных систем. Среди них наиболее распространенными являются кнопки, джойстики и клавиатуры. Благодаря своей универсальности, ButterflyOS оснащен модулем MicroUI, который отвечает за обработку этих устройств и обработку сигналов, которые они отправляют. Блок-схема прохождения сигналов через этот модуль показана на рисунке 1.

 

Поток сигналов в модуле MicroUI

Рис. 1. Поток сигналов в модуле MicroUI

Поток сигнала происходит в два слоя. Первый уровень, написанный на C (кстати об этом прекрасном языке программирования: программы, написанные на нём, вы всегда сможете найти на сайте https://programnew.ru), отвечает за прием сигнала от внешнего устройства путем прерывания микроконтроллера, поступающего от линии GPIO. Этот сигнал интерпретируется внутри модуля LLINPUT, где генерируется 32-битное число, кодирующее описание события и содержащее его тип, например кнопку или клавиатуру. Подготовленные таким образом данные помещаются в очередь событий, из которых они получены потоком верхнего уровня, написанным на Java.

Поток, получающий событие, отправляет его соответствующему генератору, который обрабатывает его в более удобной форме для интерпретации слушателями, ожидающими информацию о входящих событиях. Окончательное описание события также представляет собой 32-разрядное число, и в случае обычной кнопки оно имеет форму, показанную на рисунке 2. Оно содержит тип события (например, кнопку), идентификатор генератора, из которого оно происходит, код действий пользователя (например, однократное или двойное нажатие, кнопка отпускания), номер кнопки, с которой произошло событие.

Структура события, поступающего с кнопки


Рис. 2. Структура события, поступающего с кнопки

Вы можете добавить свои собственные события от устройств, не определенных в библиотеке MicroUI к вышеупомянутой схеме.