воскресенье, 2 июня 2019 г.

STM32 компиляция и загрузка первой программы

На данный момент существует некоторое количество популярных семейств микроконтроллеров которые используют чаще других для хобби или в профессиональной деятельности например это семейство микроконтроллеров AVR (которые имеются на платах Arduino), семейство STM32 а также PIC. Наиболее простым в использовании является семейство AVR в случае если такой микроконтроллер используется в составе аппаратной платформы Arduino т.к. среда разработки для данной платформы дает возможность писать очень простой и при этом рабочий код + процесс загрузки программы не сложен. Однако семейство STM32 обладает возможностями которых нет у AVR напр. возможность сконфигурировать порт на выход с открытым стоком или сконфигурировать порт на вход с программной подтяжкой с земле и т.д. Поэтому (на момент написания данной статьи) микроконтроллеры семейства STM32 чаще используются в профессиональной деятельности чем остальные из перечисленных выше. Трудность написания кода, в таких случаях, не считается препятствием т.к. из результатов деятельности специалистов занимающихся программированием извлекается финансовая прибыль. Если прибыль из деятельности не извлекается или извлекается малая то преимущество имеет AVR, однако аппаратные платформы с микроконтроллерами STM32 всё же можно использовать как альтернативу платформе Arduino для хобби но с большими возможностями.
Для знакомства с микроконтроллерами STM32 подойдёт простейшая минимальная платформа которую можно купить в интернет магазине: http://got.by/3esv9s. Чтобы запрограммировать данный микроконтроллер можно использовать либо специальный JTAG или SWG программатор которые можно купить в том же магазине либо использовать USB - UART конвертер и три провода которые надо правильно соединить между конвертером и платой с микроконтроллером STM32:
Рисунок 1 - Соединение USB-UART переходника с микроконтроллером STM32

Т.е. вывод RxD переходника надо соединить с выводом PA9 микроконтроллера, вывод TxD переходника надо соединить с выводом PA10 микроконтроллера + не забыть соединить их земли. Такое соединение подходит для большинства микроконтроллеров STM32 но на всякий случай лучше заглядывать в документацию прежде чем начинать загрузку.
Но прежде чем записывать программу в микроконтроллер - её надо сначала создать а сделать это можно используя например среду разработки Coocox CoIDE т.к. она бесплатна то этот вариант больше подойдёт для хобби или малоприбыльной деятельности. После установки среды Coocox нужно будет скачать компилятор GCC ARM на компьютер:


После скачивания компилятор надо подключить к среде разработки Coocox CoIDE. Для этого откроем среду Coocox CoIDE (запустим эту программу) после чего в меню "project" выбираем "Select Toolchain Path":

И в текстовое поле открывшегося окна впишем путь до компилятора:
Теперь всё готово для создания программы в этой среде. Чтобы начать писать программу перейдем на стартовую страницу и выберем "Create a New Progect" (т.е. "создать какой то один новый проект")
 

Далее придумаем и напишем для него название и путь до того места где он должен храниться (путь можно оставить по умолчанию (да и название, в принципе, тоже)):
Нажмем "Next" и выбираем просто микросхему а не плату:
Выбираем название микроконтроллера:
Здесь можно почитать описание, параметры и открыть документацию:
Нажимаем финиш и переходим к следующему этапу:
Выбираем необходимые библиотеки, выберем GPIO остальное подключится автоматически:
Справа появиться справка по данной библиотеке:
Переходим в main.c:
Напишем программу мигания светодиодом подключенным к пину PB9 через резистор на плюс питания а выход сделаем с открытым стоком дабы опробовать эту возможность:
Откомпилируем нажав "Project" - "Rebuild":
В случае успешной компиляции получим соответствующую надпись (в случае не успешной правильно переделаем код и повторим попытку):

Находим по этому адресу проект и там ищем hex файл для прошивки:
Переключалкой (или что там есть на плате) делаем на выводе BOOT0 логическую единицу и втыкаем usb-uart переходник с правильно (см. рисунок 1) подключенным к нему микроконтроллером в usb порт того компьютера на котором находиться прошивка:
При этом надо не забыть сделать питание микроконтроллеру. Для этого на плате обычно есть специальные выводы которые идут на стабилизатор который понижает напряжение до 3.3В которое необходимо для питания данного микроконтроллера. AVR можно питать от 5В а STM32 надо от 3.3В поэтому надо быть внимательнее и не перепутать.

Теперь микроконтроллер готов к прошивке однако для того чтобы это сделать понадобиться специальная программа "STM Flash Loader Demonstrator" ей надо скачать и установить себе на тот компьютер на котором находиться прошивка и к которому подключен микроконтроллер через usb-uart переходник. После установки данной программу её надо запустить путем двойного кликанья левой кнопкой мыши по значку её или каким либо другим способом:

После запуска данной программы откроется окно её:
В котором надо нажать кнопку "Next" и перейти в следующее окно в котором тоже надо нажать кнопку "Next":

Далее выбираем правильную "цель" ("target" микроконтроллер для загрузки в него прошивки) и нажимаем "Next":
В следующем окне поставим точку напротив словосочетания "загрузить к прибору":
 В окно под словосочетанием "загрузить от файла" впечатаем, клавиатурой компьютера, путь до прошивки с расширением .hex которую мы сделали ранее средой Coocox CoIDE:
Далее поставим жирную чёрную точку напротив словосочетания "стереть необходимые страницы" (если она вдруг стоит не там изначально):
Нажмем "далее":
После чего запуститься загрузка и если она будет удачной то появиться такое окно:
Теперь можно вынуть USB-UART переходник потом переставить переключалку BOOT0 обратно после чего воткнуть его обратно и радоваться миганию светодиода:
Текст программы:


КАРТА БЛОГА (содержание)