Урок №6 Я — писатель

Сегодня мы продолжаем освоение экрана CyberSteak’а, которое началось в предыдущей статье. И, как было обещано, речь пойдет о выводе текстовой информации на экран.
В библиотеке имеется несколько функций для работы с текстом. Рассмотрим их по порядку.

drawchar(uint8_t x, uint8_t y, unsigned char c,uint16_t color, uint16_t bgcolor, uint8_t size)
— вспомогательная функция, позволяет выводить на экран символ в латинской кодировке.
Здесь x, y — координаты символа [0-128; 0-128]; c — символ для вывода на экран; color — цвет символа; bgcolor — цвет фона символа (цвет знакоместа), size — размер символа: 1 — 100%, 2 — 200% и т.д. Номинальный размер знакоместа — 5х8 пикселей.

Задача:  отобразить символ «@» в координатах x = 40, y = 10, красным цветом на желтом фоне, размером 2:
drawchar(40, 10, '@', RED, 0xFEC0, 2);
Напомним, RED — красный цвет, заданный в библиотеке, 0xFEC0 — желтый цвет произвольного оттенка, полученный, например, на таком калькуляторе. Можно было, также, использовать библиотечный вариант — YELLOW.

display_string(char *str, uint8_t size, uint16_t color, uint16_t bgcolor, uint8_t x, uint8_t y)
— функция вывода на экран строки символов в латинской кодировке.
Здесь *str — указатель на строку символов для отображения, size — размер символов,  color — цвет строки символов; bgcolor — цвет фона строки символов, x и y — координаты строки.

Задача:  вывести на экране CyberSteak’а строку «Hello World !» в координатах x = 5, y = 20, синим цветом на черном фоне, размером 1:
display_string('Hello World !', 1, BLUE, BLACK, 5, 20);
Примечательно, что в случае вывода длинного текста выполнится перенос на следующую строку.

drawchar_new(uint8_t x, uint8_t y, unsigned char c,uint16_t color, uint16_t bgcolor)
— вспомогательная функция, позволяет работать со шрифтами, сгенерированными в программе LCD Image Converter, которая обсуждалась в уроке №3.  Внимательные читатели заметят, что параметры этой функции не отличаются от параметров ранее рассмотренной функции drawchar(), за исключением параметра size, который теперь отсутствует. Функция drawchar_new() по умолчанию настроенная для отображения символов сгенерированного шрифта Arial, входящего в графическую библиотеку, позволяет отображать как кириллические символы, так и латиницу.

Задача:  отобразить «П» в координатах x = 60, y = 20, черным цветом  на белом фоне:
drawchar_new(60, 20, 'П', BLACK, WHITE);

display_string_new(char *str, uint16_t color, uint16_t bgcolor, uint8_t x, uint8_t y)
— функция вывода на экран строки символов. Отличается от display_string() способностью отображать текст шрифтом, сгенерированным в программе LCD Image Converter.  Как было отмечено ранее,  в графической библиотеке установлен сгенерированный шрифт Arial.
Здесь *str — указатель на строку символов для отображения, color — цвет строки символов; bgcolor — цвет фона строки символов, x и y — координаты строки.

Задача:  вывести на экране конструктора строку «Игра закончена, Game over» в координатах x = 2, y = 40, зеленым цветом на черном фоне:
display_string_new('Игра закончена, Game over', GREEN, BLACK, 2, 40);
В случае вывода длинного текста выполнится перенос на следующую строку.

О том, как создавать собственные шрифты, мы поговорим с вами в одном из дальнейших уроков.

Урок №5 Я — художник

Название урока, конечно, сильно преувеличено. На самом деле речь пойдет о рисовании графических объектов — геометрических примитивов и спрайтов на экране CyberSteak’а.

Экран конструктора TFT 1,44″ имеет разрешение 128х128 пикселей, количество цветов 262143, что означает 18 bit/pixel. Для экономии памяти микроконтроллера мы будем использовать в своих приложениях интерфейс RGB565, что означает 5 bit на красный, 6 bit на зеленый и 5 bit на синий компонент пикселя. Экран в таком формате отображает  65535 цветов, т.е. 16 bit/pixel, чего вполне достаточно для экрана с таким разрешением.

Микроконтроллер управляет экраном по протоколу spi.  Сначала мы включим поддержку этого протокола, а затем подключим к проекту графическую библиотеку.

Откройте в STM32CubeMX проект из предыдущего урока. В меню File  выберите Save Project As.. и задайте новое имя проекту.

Во вкладке Pinout разверните периферийный модуль SPI и выберите режим (Mode) Transmit Only Master. Этот режим поддерживает только передачу данных от контроллера устройству, в нашем случае — экрану. Считывать данные из регистров экрана мы не будем.

Установите выводы PA1, PA3, PA4, PA6 как выходы (режим GPIO_Output) и присвойте им названия, как показано на скриншоте:


Во вкладке Configuration выберите настройку GPIO — портов ввода-вывода. Выводы  PA1, PA4, PA6 участвуют в передаче команд и данных экрану, присвоим им, согласно даташиту на контроллер экрана, низкое значение уровня, указав Low в поле GPIO output level для каждого вывода. PA3, он же — Backlight — служит для включения подсветки экрана, катод которого подключен к минусу, поэтому для анода присвоим высокое значение High.

Нажмите Ok и перейдите к настройке протокола SPI. Значения, выставленные по-умолчанию подходят нашему проекту. Единственное, что нужно изменить — это делитель частоты. В поле Prescaler установите значение 4 и нажмите Ok.

После этого, сохраните проект, сгенерируйте код и импортируйте его в среду разработки SW4STM32, следуя рекомендациям из предыдущего урока.

После компиляции проекта должна включиться подсветка экрана. Но это еще не значит, что мы его настроили. Необходимо подключить библиотеку для работы с экраном. В репозитории находятся две библиотеки для скачивания. Одна для экранов на контроллере st7735, а другая — для экранов на контроллере ili9163. Отличить экраны между собой можно по внешнему виду гибкого шлейфа, если отсутствует иная информация:


Скачайте необходимую библиотеку, разархивируйте и скопируйте файл с расширением *.с в папку Src, а с расширением *.h в папку Inc, которые находятся в папке с проектом. После этого зайдите в SW4STM32 и выполните команду обновить, нажав правой клавишей на проекте и выбрав в контекстном меню команду Refresh или нажав клавишу F5.

Откройте main.c и выполните подключение библиотеки. Например, для экрана с контроллером ili9163 подключение выглядит следующим образом:
/* USER CODE BEGIN Includes */
#include "ili9163.h"
/* USER CODE END Includes */

Прокрутите код до функции int main(void) и после инициализации периферии выполните инициализацию экрана:
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI1_Init();

/* USER CODE BEGIN 2 */
display_init();
display_setRotation(2);
display_clear(BLUE);
display_on();
/* USER CODE END 2 */

Здесь display_init() — инициализация экрана. В этот момент происходит настройка всех его регистров, отвечающих за разрешение, цветопередачу, контроль питания, настройку частоты и т.д.
display_setRotation(2) — угол поворота экрана с шагом 90o. Возможные варианты от 0 до 3.
display_clear(BLUE) — очистка экрана, т.е. заливка выбранным цветом.
display_on() — включение дисплея.

Запрограммируйте CyberSteak. Экран теперь светится синим цветом.
Все функции, доступные для использования находятся в файле библиотеки экрана с расширением *.h. Сами функции описаны в файле *.с.

Основным цветам в библиотеке присвоены названия (см. *.h). Для получения произвольного цвета необходимо его указать в 16bit формате RGB565, например, воспользовавшись калькулятором.

Давайте нарисуем закрашенный прямоугольник произвольного цвета на черном фоне. Для этого очистим экран черным цветом: display_clear(BLACK).  После команды включения дисплея добавим функцию рисования закрашенного прямоугольника в точке с координатами x=50, y=20, шириной 30, высотой 70 пикселей, цвет — оттенок зеленого: fillrect(50,20,30,70,0x2E45).

Потренируйтесь с выводом на экран остальных геометрических фигур, доступных в библиотеке.

Теперь давайте выведем на экран картинку, заполняющую весь экран, т.е. размерами 128х128 пикселей. Для этого в библиотеке предусмотрена функция  draw_background(const uint16_t *background), где *background — указатель на массив цветов пикселей. Выберите подходящую картинку и с помощью, например, Photoshop’а сделайте ее размерами 128х128 пикселей, сохранив в формате PNG:

Далее воспользуйтесь приложением LCD Image Converter, о котором мы рассказывали на уроке №3. Запустите приложение и в меню File выполните команду Open для открытия файла рисунка, который вы приготовили, предварительно установив тип Images для отображения файлов с рисунками в форматах *.bmp, *.gif, *.jpg, *.png и т.п.

Установите желаемый масштаб отображения картинки, например х2. Подкорректируйте, если есть необходимость, некоторые пиксели. В меню Options выберите пункт Conversion. Выберите preset: Color R5G6B5. Во вкладке Prepare установите Type: Color, Main Scan Direction: Top to Bottom, Line Scan Direction: Forward. Далее во вкладке Matrix установите Type: Color, а во вкладке Image нужно установить Block Size: 16bit. После этого в меню File выберите Convert, укажите имя файла и нажмите Сохранить. Программа создаст файл с расширением *.с, в котором находится массив цветов пикселей. Этот массив данных теперь необходимо скопировать в файл, который мы будем использовать нашей программой в качестве ресурса для графических элементов —  фона, спрайтов и др.

Откройте SW4STM32 и создайте в папке Inc файл pictures.h. Скопируйте созданный ранее массив данных в этот файл:

Откройте main.c и подключите ресурсный файл pictures.h к проекту:
/* USER CODE BEGIN Includes */
#include "ili9163.h"
#include "pictures.h"
/* USER CODE END Includes */

Теперь в файле main.c вместо display_clear(BLACK) добавьте строку draw_background(background), где background — указатель на массив картинки.

Скомпилируйте проект и запрограммируйте CyberSteak. На экране должна появиться наша картинка:

А теперь добавим ракету. В графическом редакторе создайте спрайт на черном фоне, небольшого размера, например 20х70 (ш х в) пикселей:

Создайте массив цветов пикселей для этого спрайта с помощью конвертера LCD Image Converter и добавьте массив в ресурсный файл pictures.h. Откройте main.c и после команды включения дисплея добавьте строку отображения спрайта:
/* USER CODE BEGIN 2 */
display_init(); //display initialization
display_setRotation(2);
draw_background(background);
display_on();
draw_sprite (10, 8, 20,70, rocket, background);
/* USER CODE END 2 */

Запись означает: отобразить спрайт с координатами верхнего левого угла x=10, y=8, шириной 20, высотой 70 пикселей, указатель на массив спрайта: rocket,  указатель на массив фона: background.

В итоге на экране должна появиться такая картинка:

Урок по рисованию закончен. В другой раз поговорим о письменности.

Урок №4 HelloWorld

Сегодня мы разберем создание проекта с помощью приложений SW4STM32 и STM32CubeMX на примере классической программы HelloWorld для микроконтроллеров — мигание светодиодом. Сначала мы заставим мигать светодиод по обычной, однопоточной технологии написания программ для микроконтроллеров, а затем, выполним ту же задачу с помощью операционной системы реального времени — FreeRTOS.

Запустите STM32CubeMX, выберите New Project и в появившемся окне в левой колонке фильтра микроконтроллеров установите галочки, как показано на скриншоте:

Выбранные галочки сверху-вниз означают: ядро М3, серия F1, линейка F103, корпус 64-х выводной LQFP. В правом окне внизу появятся отфильтрованные результаты поиска, согласно выбранным критериям. Выберите STM32F103RB с Flash памятью 128 килобайт и RAM 20 килобайт, именно такой микроконтроллер стоит на борту системной платы CyberSteak’а. Далее нажмите Start Project.

В созданном проекте в правом окне отобразится выбранный микроконтроллер. Выполним основные настройки периферии. Для подключения кварцевого резонатора, установленного на системной плате, раскройте вкладку RCC в окне дерева элементов периферии и в поле High Speed Clock (HSE) выберите Crystal Ceramic Resonator. В окне отображения микроконтроллера выводы, подключенные к кварцевому резонатору изменят цвет на зеленый, уведомляя нас о том, что эти выводы больше нельзя использовать для других нужд (почти для всех выводов STM32 можно выполнить переназначение — remapping).  Для возможности использования программатора по протоколу SWD раскройте вкладку SYS и в поле Debug выберите Serial Wire. Соответствующие выводы контроллера изменят цвет на зеленый. Результат —  на скриншоте:

На системной плате имеется светодиод подсоединенный к выводу 13 порта С. Настроим этот вывод как выход. Наведите указатель мыши на вывод PC13, нажмите левую кнопку для вызова контекстного меню конфигурирования вывода и выберите GPIO_Output. Вывод изменит цвет на зеленый. Теперь нажмите правую кнопку мыши на этом выводе и выберите Enter User Label для присвоения произвольного имени, например BLUE_LED:

Перейдем на вкладку Clock Configuration для настройки тактирования периферии. К счастью на этой страшной, на первый взгляд, вкладке все уже настроено. Мы лишь поменяем частоту тактирования на максимальную для этого микроконтроллера — 72 MHz. В поле HCLK установите значение 72 и нажмите Enter:

Мастер настройки тактирования выдаст сообщение о том, что с указанными настройками (делителями и умножителями) такую частоту не получить и предложит пересчитать:

В результате система установит следующие настройки коэффициентов:


Далее на вкладке Configuration в поле System основного окна нажмите кнопку GPIO для настройки портов ввода-вывода:

В окне Pin Configuration отображаются выводы, которым были присвоены значения на вкладке Pinout, отличающиеся от значений в сброшенном состоянии микроконтроллера (reset state):

Выбрав пин PC13 отобразится дополнительная настройка его конфигурации. Присвойте для GPIO output level значение High, чтобы светодиод в момент запуска программы не светился, т.к. его анод подключен к плюсу питания 3.3 вольта, а катод — через токоограничительный резистор — к выводу PC13. Для значения GPIO mode присвойте значение Output Push Pull — двухтактный выход.  Остальные параметры оставьте без изменения, нажмите Ok.

Вот и все настройки. Остается сохранить проект и сгенерировать код инициализации микроконтроллера. Перейдите в настройки проекта в меню Project, выбрав пункт Settings, появится окно:

Во вкладке Project в поле Project Name укажите название проекта. В Project Location укажите путь к папке проекта на компьютере. В Toolchain/IDE укажите среду разработки SW4STM32. Остальные настройки оставим без изменений.

Во вкладке Code Generator отметьте пункты как показано на скриншоте:

В проект будут добавлены только необходимые файлы из библиотеки, а пользовательский код будет сохранен при регенерации проекта в STM32CubeMX. Нажмите Ok.

Теперь сгенерируем код. Зайдите в меню Project и нажмите Generate Code. Появится сообщение системы об успешной генерации кода и будет предложено открыть проект:

Делать мы этого не будем. Закройте окно и откройте интегрированную среду разработки SW4STM32. Нам необходимо импортировать проект из STM32CubeMX. Для этого в меню File нажмите Import:

В появившемся окне выберите Existing Projects into Workspace и нажмите Next. В следующем окне укажите папку, в которую генерировали проект в STM32CubeMX.  В окне Projects должен появиться проект. Выберите его и завершите импортирование, нажав Finish.

Основные процедуры по генерированию кода инициализации микроконтроллера и создание проекта в среде программирования выполнены.

Запрограммируем функционал.  В дереве проекта в папке «Src» откройте  файл main.c и промотайте до функции while(1) — основного цикла программы.

Для сохранности пользовательского кода после регенерации проекта в STM32CubeMX код необходимо вставлять между комментариев типа
/* USER CODE BEGIN  */

/* USER CODE END */
После строки с комментарием /* USER CODE BEGIN 3 */ добавьте функцию смены состояния пина из библиотеки аппаратных абстракций HAL: HAL_GPIO_TogglePin(GPIOC, BLUE_LED_Pin);
и добавьте задержку: HAL_Delay(200); //200ms

Должно получиться так:

Сохраните проект и выполните компиляцию, нажав . Запрограммируйте CyberSteak, как было показано в предыдущем уроке, выбрав файл *.bin в папке Debug. Если все выполнено правильно, должен замигать синий светодиод.

На видео приведена реализация поставленной задачи:

play-sharp-fill

На этом урок не заканчивается. Теперь выполним эту же задачу, но средствами операционной системы реального времени FreeRTOS.

Откройте наш проект в STM32CubeMX и в левом окне конфигурации промежуточного программного обеспечения MiddleWares активируйте FREERTOS, установив галочку.

Разверните вкладку SYS и измените источник для временной базы Timebase Source с SysTick на TIM1.

Откройте вкладку Configuration и в поле MiddleWares нажмите кнопку FREERTOS для конфигурирования.

В открывшемся окне зайдите во вкладку Tasks and Queues для того, чтобы создать задачу (независимый поток) мигания светодиодом:

Система о нас уже позаботилась и создала одну задачу DefaultTask с параметрами по умолчанию. Ее и будем использовать. Ничего не меняя, нажмем Ok. Больше в STM32CubeMX сегодня делать нечего. Сохраним проект  и сгенерируем код.

Открыв SW4STM32 вы увидите, что проект изменился: появилась папка MiddleWares, содержащая операционную систему, в папках Src и Inc тоже добавилось несколько файлов для работы с операционной системой.  Файл main.c претерпел изменения по части инициализации операционной системы, а также, добавилось описание новой функции StartDefaultTask, которую мы сгенерировали в STM32CubeMX. Прокрутив до функции главного цикла while(1) вы увидите, что код, который мы написали раньше между комментариев  /* USER CODE BEGIN  3*/… /* USER CODE END 3*/ остался без изменений.

Удалите этот код из главного цикла, потому что до этого места программа при работе операционной системы никогда не дойдет. Код мигания светодиодом добавим в функцию StartDefaultTask, являющейся одним (пока) из многочисленных независимых потоков операционной системы. Найдите ее и впишите код смены состояния пина с помощью HAL-функции из предыдущего примера в бесконечный цикл:

Здесь osDelay(100); означает задержку в 100 ms. Сохранив проект, скомпилировав его и записав в CyberSteak, вы увидите, что синий светодиод начнет мигать точно так же, как и раньше, только средствами операционной системы FreeRTOS.

Данный пример показывает нам, что операционная система настроена правильно и все работает должным образом.

Для понимания работы операционной системы, о том что такое независимые потоки и как все устроено рекомендуем обратиться к документам «The FreeRTOStm Reference Manual»  и «Mastering the FreeRTOStm Real Time Kernel».

 

Урок №3 Настроим рабочее место

Итак, мы собрали конструктор, записали в него демонстрационную игру и поиграли. Теперь настала очередь заняться тем, для чего CyberSteak был создан, а именно — для программирования игр и других приложений.

Первым делом настроим рабочее место. Это означает, что нам нужно установить несколько программ. Вот их список:

Для кодинга:

  • AC6 SW4STM32 — System Workbench for STM32: свободно распространяемая интегрированная среда разработки программного обеспечения на основе Eclipse, которая поддерживает полный спектр микроконтроллеров семейства STM32
  • STM32CubeMX — embedded software: визуальный графический конфигуратор для микроконтроллеров STM32 с набором программных компонентов таких как HAL, LL, middleware и  примерами приложений

Для графики могут быть использованы следующие программы или аналогичные по назначению:

  • Adobe Photoshop: графический редактор
  • LCD Image Converter: приложение позволяет создавать растровые изображения и шрифты, и преобразовать их в исходный формат «Cи» для программ, встроенных в микроконтроллеры
  • Bryce: генератор ландшафтов и 3d моделей

Теперь обо всем по порядку.

Интегрированная среда SW4STM32, созданная сервисной компанией AC6, которая предоставляет обучение и консультации по встроенным системам, предназначена для разработки программного обеспечения устройств на контроллерах STM32. Среда  позволяет значительно упростить и ускорить разработку прикладного программного обеспечения для микроконтроллеров всего семейства STM32. Ключевые особенности:

  • Всесторонняя поддержка для микроконтроллеров STM32, всех оценочных плат STM32, а также прошивок STM32 (библиотек SPL — Standard Peripheral Library и HAL — Hardware Abstraction Layer)
  • GCC C/C++ компилятор (свободно распространяемый)
  • GDB отладчик (свободно распространяемый)
  • Основана на платформе Eclipse с управлением работой в команде
  • Совместима с плагинами для Eclipse
  • Поддержка программаторов ST-LINK
  • Без ограничения по размеру кода
  • Кроссплатформенность

Для скачивания инсталлятора откройте сайт www.st.com, наберите в поиске «sw4stm32». Внизу страницы отобразится переход на сайт www.openstm32.org, где вам предложат войти (Log in) или зарегистрироваться (Register). Скачайте инсталлятор и установите программу, следуя мастеру установки. Минимальные аппаратные требования к  компьютеру: 1 Гбайт RAM и 2 Гбайта свободного дискового пространства. Установка не должна вызвать особых проблем. Если во время установки система потребует установить пакет Java SE Runtime Environment (JRE), необходимо нажать «Ok» для того, чтобы выйти на сайт Oracle и загрузить последнюю версию Java соответствующую вашей операционной системе.

С установкой среды разработки ПО закончили, перейдем к графическому конфигуратору STM32CubeMX, являющимся оригинальным решением по облегчению жизни разработчикам за счет сокращения усилий, времени и затрат на разработку. Конфигуратор покрывает все семейство STM32. Ключевые особенности:

  • Интуитивно понятный выбор микроконтроллера STM32
  • Графическая конфигурация микроконтроллера:
    • Pinout: назначение выводов с автоматическим разрешением конфликтов
    • Clock tree: настройка тактирования с динамической проверкой конфигурации
    • Функциональные режимы периферийного и промежуточного ПО и инициализация с динамической проверкой ограничений параметров
    • Калькулятор энергопотребления
  • Генерация кода Cи, охватывающая инициализацию микроконтроллеров STM32, совместимых с компиляторами IAR™, Keil™ и GCC
  • Доступен как автономное кроссплатформенное программное обеспечение

Для скачивания инсталлятора откройте сайт www.st.com, наберите в поиске «stm32cubemx». Внизу страницы отобразится ссылка для скачивания, нажав на которую, начнется процесс загрузки при условии входа (Log in) или регистрации (Register). Установите программу, следуя мастеру установки.

Практическое применение STM32CubeMX и SW4STM32 будет рассмотрено в следующем уроке на примере классической программы HelloWorld для микроконтроллеров — мигание светодиодом в однопоточной системе и с помощью операционной системы реального времени FreeRTOS.

Графические программы здесь мы рассматривать не будем за исключением утилиты LCD Image Converter, которая позволяет:

  • Создавать изображения
  • Создавать шрифты (набор изображений — символов), включая кодировку юникода
  • Создавать структуры данных для дисплеев:
    • Монохромных, градаций серого и цветных
    • С вертикальной и горизонтальной ориентацией байт
    • 8, 16, 24, 32 бит данных
    • 1…32 бит на пиксел
  • Импортировать из файлов графических форматов (bmp, gif, jpg, jpeg, png, pbm, pgm, ppm, tiff, xbm, xpm)
  • Экспортировать в файлы (bmp, jpg, png, ppm, tiff, xbm, xpm)
  • Просматривать в редакторе с увеличением от 1 до 50 раз

Для скачивания утилиты пройдите на сайт www.riuson.com в раздел Загрузки и выберите подходящий вариант из числа представленных. Распакуйте архив в папку. Используйте файл lcd-image-converter.exe для запуска программы.  Инсталляция не требуется. Работу с программой рассмотрим в одном из уроков, посвященных работе с выводом изображений на дисплей.

Подведем итоги. В этом уроке мы обзавелись набором необходимых приложений для программирования микроконтроллеров STM32, узнали какие программы понадобятся для работы с графикой и скачали утилиту для  преобразования изображений в исходный формат «Cи».

Урок №2 Запрограммируем киберстейк

Устройство собрано, заряжено и готово к первому программированию. Для этого нам понадобится программатор STM32 ST-Link V2 и программа ST-Link Utility. Зарегистрируйтесь и скачайте дистрибутив программы  с сайта www.st.com, набрав в поиске «STSW-LINK004» или «ST-LINK utility» или пройдя по ссылке. Подключите шлейф программатора к разъему SWD CyberSteak’a, как показано на картинке:SWDПодключите программатор к USB порту компьютера и запустите программу ST-Link Utility. Нажмите на пиктограмму  и выполните подключение к устройству. Окно статуса должно показать примерно следующее:

Далее скачайте демо-игру и разархивируйте ее в папку Demo.  Нажмите  и выберите из папки Demo файл game-demo.bin. Перейдите в раздел программирования, нажав . В открывшемся окне установите галочку  и нажмите кнопку Start. Начнется процесс записи программы в микроконтроллер. После этого произойдет сброс и игра автоматически запустится.

Более подробное описание работы с программой ST-Link Utility приведено в мануале UM0892 «STM32 ST-LINK Utility software description», который можно скачать с сайта www.st.com

Урок №1 Сборка конструктора

Конструктор представляет собой две платы — основную системную, на которой располагается микроконтроллер STM32F103RBT6, порт USB, порт SWD — для программирования, порт для связи с платой расширения, на которой располагаются кнопки управления, экран и модуль зарядки литий-полимерного аккумулятора.

Первое, что мы сделаем — припаяем двухрядные коннекторы 2х13 pin к системной плате, установив их со стороны без микроконтроллера. 

Пайку производить со стороны микроконтроллера. Для удобства пайки рекомендуем откусить бокорезами выводы коннекторов таким образом, чтобы они выступали из отверстий платы не более чем на 1 мм. 

На системной плате имеется светодиод — индикатор питания, соединенный с «землей» через резистор R16. Чтобы исключить постоянное свечение светодиода, уменьшающее заряд аккумулятора, резистор необходимо выпаять.

Далее установим плату расширения на вновь припаянные коннекторы, расположив ее кнопками вверх, как показано на фото:

Откусите бокорезами выводы коннекторов, чтобы они выступали из отверстий платы не более чем на 1 мм. Пайку производить со стороны кнопок.

После этого установим LCD-дисплей. Это самая ответственная процедура сборки во всем конструкторе. Сначала припаяйте один крайний вывод дисплея, после этого добейтесь его перпендикулярности относительно платы и окончательно зафиксируйте, припаяв другой крайний вывод. Затем припаяйте оставшиеся выводы дисплея.

Последнее, что мы припаяем — это аккумулятор. Вставьте выводы в отверстия на плате расширения, соблюдая полярность и припаяйте: красный провод — к «плюсу», черный провод — к «минусу».

Получившуюся сборку теперь установим в корпус. На ровную поверхность положите нижнюю часть корпуса, а сверху разместите небольшой кусочек уплотнителя для фиксации аккумулятора. 

После этого установите электронику, положив аккумулятор на уплотнитель.

Затем установите среднюю часть корпуса, аккуратно разместив порты USB и SWD в отверстия корпуса. Ушки для крепления верхней лицевой панели корпуса должны располагаться сверху. Разместите пинцетом пластиковые кнопки на соответствующие места на плате расширения.

Установите лицевую панель корпуса, закрутив ее винтами при помощи отвертки для шестигранных головок.

CyberSteak приготовлен! Осталось его посолить зарядить, для этого используйте кабель USB micro-B с адаптером питания 5в, не более 1А.