Введение
Пользователи современной электроники быстро привыкли к многоцветным графическим интерфейсам с сенсорным управлением и уже прохладно относятся к изделиям с простыми алфавитно-цифровыми дисплеями. Однако применение цветных графических панелей в микропроцессорных устройствах требует наличия большого объёма памяти, специальных интерфейсов и высокой производительности системы. Кроме того, программная поддержка графических панелей значительно сложнее и нуждается в специализированных средах разработки.
В настоящее время выпускается множество электронной техники, оснащённой современными производительными процессорами с достаточным объёмом памяти и цветными графическими панелями. Для построения подобных устройств и графических интерфейсов пользователя (ГИП) существуют специальные программные среды разработки, позволяющие минимизировать затраты времени и сил. Программы ГИП представляют собой разновидность пользовательского интерфейса, в котором такие элементы, как меню, кнопки, значки, списки и т.п., выполнены в виде графических изображений на дисплее. В отличие от интерфейса командной строки, в ГИП пользователь имеет произвольный доступ ко всем видимым на экране элементам интерфейса. С помощью различных устройств ввода, таких как клавиатура, мышь, джойстик и др., осуществляется непосредственное манипулирование элементами интерфейса и, тем самым, управление устройством.
Компания STMicroelectronics [1] для создания ГИП предлагает программную графическую библиотеку STemWin, построенную на основе библиотеки emWin от SEGGER [2].
Ниже представлены простые примеры использования данной библиотеки.
Аппаратное обеспечение
В качестве аппаратной платформы в приведённых ниже приложениях будет использоваться готовая отладочная плата 32F429IDISCOVERY с микроконтроллером STM32F429ZIT6 и цветной графической панелью. Отладочная плата 32F429IDISCOVERY предоставляет все необходимые возможности для того, чтобы сразу приступить к разработке интерфейсных программ, как начинающим разработчикам, так и профессионалам. Внешний вид отладочной платы 32F429IDISCOVERY представлен на рисунке 1.

Плата 32F429IDISCOVERY построена на основе микроконтроллера нового поколения STM32F429ZIT6 компании STMicroelectronics. Данный микроконтроллер с ядром Cortex-M4F имеет повышенную тактовую частоту 180 МГц, увеличенный объём флэш- (2 Мбит) и оперативной памяти (256 Кбит). Кроме того, микроконтроллер имеет встроенный контроллер внешней памяти SDRAM для дисплея. Микроконтроллер выполнен в корпусе выводного типа LQFP144. Отладочная плата оснащена сенсорным цветным QVGA TFT LCD-дисплеем диагональю 2,4² с разрешением 240×320 точек (262 тыс. цветов) и графическим ускорителем. Кроме того, на плате установлены дополнительная SDRAM-память объёмом 64 Мбит, трёхосевой гироскоп L3GD20, разъём Micro-AB для интерфейса USB OTG, шесть светодиодов, две пользовательские кнопки и встроенный программатор-отладчик ST-LINK/V2. Все свободные выводы микроконтроллера доступны на дополнительном разъёме платы.
Подробнее с отладочной платой 32F429IDISCOVERY можно ознакомиться на сайте производителя [3].
Программное обеспечение
Библиотека STemWin позволяет создавать графические пользовательские интерфейсы для микроконтроллеров серии STM32 с LCD-дисплеями, используя возможности аппаратного ускорения микроконтроллеров STM32. Библиотека находится в открытом доступе на сайте производителя [4].
STemWin представляет собой комплексное решение, предлагающее такие функции, как работа с изображениями в форматах JPG, GIF и PNG, множество виджетов в виде флажков, кнопок и т.п., VNC-сервер, позволяющий отображать локальный экран на удалённых устройствах. STemWin содержит профессиональные средства разработки, такие как GUIBuilder, для создания приложений простым перетаскиванием элементов, преобразователь шрифтов, преобразователь картинок и дизайнер пользовательского интерфейса. Внешний вид дизайнера GUIBuilder с различными графическими элементами, размещёнными на заготовке окна, представлен на рисунке 2.

Библиотека STemWin значительно облегчает процесс разработки графического интерфейса и работы с графикой на микроконтроллерах и предоставляет следующие возможности:
- создание геометрических фигур, отображение шрифтов и картинок;
- поддержка различных видов курсоров;
- формирование прозрачных слоёв изображений;
- работа с несколькими графическими буферами;
- преобразование цветов;
- оконный менеджер.
Примеры программ
Для выполнения рассмотренных далее примеров необходимо загрузить библиотеку STemWin [4] и разархивировать её. После этого следует запустить программу дизайнера GUIBuilder.exe, находящуюся в распакованном каталоге \STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\Software. Затем необходимо создать рабочее окно для графической панели в виде элемента Framewin, кликнув по соответствующему элементу меню в верхней области окна программы GUIBuilder. Размеры окна Framewin и прочие его свойства задаются в панели свойств Property. С помощью контекстного меню, открываемого щелчком правой кнопки мыши, можно добавить в окно элементы горизонтальной и вертикальной прокрутки, задать шрифт нужного размера и цвета и т.д.
Для того чтобы поместить в окно Framewin элемент Text, необходимо выбрать соответствующий элемент меню в верхней области окна программы и аналогично задать его свойства. Исходный текст элемента следует заменить нужным, например «Hello!».
Для генерации кода программы следует выполнить операцию сохранения либо из меню File → Save, либо нажатием комбинации клавиш Ctrl+S. При этом программа создаст файл с именем FramewinDLG.c и сохранит его в том же каталоге, в котором находится программа дизайнера GUIBuilder.
Теперь остаётся лишь добавить к полученному файлу строки программы для главного модуля, приведённые в листинге 1, и выполнить компиляцию проекта в среде разработки программ, например в Keil. Образец проекта для отладочной платы в этой среде можно загрузить с сайта Keil [5].

После загрузки полученного кода программы в отладочную плату на экране LCD-дисплея платы появится текст «Hello!».
Следующий пример – отображение произвольной картинки на экране LCD-дисплея отладочной платы. В данном случае необходимо вместо текста разместить в окне Framewin дизайнера GUIBuilder элемент Image и задать его размеры с помощью панели свойств или мыши. Затем в контекстном меню этого элемента следует выбрать загрузку файла произвольной картинки в формате BMP, GIF, JPEG или PNG. Для того чтобы картинка полностью разместилась в поле дисплея необходимо, чтобы её размер в пикселях совпадал с разрешением дисплея. В данном случае размер составляет 240×320 точек. Изменить размеры картинки можно в любом графическом редакторе. Генерация кода программы и последующие действия ничем не отличаются от действий, описанных в предыдущем примере. Код программы будет содержать данные загруженной картинки в виде таблицы чисел. После загрузки полученного кода программы в отладочную плату изображение появится на LCD-дисплее.
Если интерфейс пользователя в программе организуется с применением только текстовых сообщений, можно обойтись без графического дизайнера GUIBuilder, воспользовавшись библиотекой GUI и функциями среды разработки. Пример такой программы приведён в листинге 2. Аргумент функции GUI_DispString(«Hello world!») можно заменить произвольным текстом.
Множество других готовых примеров с исходными кодами программ можно найти на сайте компании SEGGER [6]. С их помощью нетрудно научиться быстро создавать красивые и интуитивно понятные интерфейсы пользователя.
Литература
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

