Как программируют микроконтроллеры STM32?

Как программируют микроконтроллеры STM32?

Некогда появившиеся на белый свет электроники микроконтроллеры STM32 довольно скоро получили высокий уровень популярности среди разработчиков. С тех пор минуло уже без малого два десятка лет, но чипы продолжают оставаться в тренде. Интернет перенасыщен разного рода инструкциями по работе с этими чипами, но среди массы предлагаемых инструктажей крайне редко встречаются реально стоящие и полезные руководства. Здесь ниже представлен очередной инструктаж, конкретно под программирование чипа «STM32F103C6». Насколько полезный и нужный этот опус – судить конечному читателю.

Среда программирования на микроконтроллеры STM32

Как выяснилось после длительного и тщательного изучения рынка программного обеспечения под микроконтроллеры STM32, оптимальным вариантом с точки зрения расходов бюджета видится следующая связка программного обеспечения (скачать тут ниже под WIN 32):

  1. «CooCox CoIDE» (версия 1.7.8).
  2. «GNU Arm Embedded Toolchain» (10.3-2021.10).
  3. «STM32 ST-LINK Utility» (версия 1.0.0).

Этот набор софта (бесплатно распространяемый) вполне позволяет работать с микроконтроллерами STM32 разного исполнения. Набор не нагружает сильно операционную систему, обеспечивает нужный результат. Новичкам-электронщикам, заинтересованным в таком популярном теперь деле, как программирование, можно смело рекомендовать.

Как программируют микроконтроллеры STM32 + железо
«Железо» под эксперименты, позволяющее узнать – как программируют микроконтроллеры STM32 для различных нужд

Что касается «железа» — тут, соответственно, требуется непосредственно сам клиент – экспериментальная плата с чипом STM32 (в частности, 32F103C6T6), а также заветный «свисток» китайского происхождения – программатор «ST-Link V2». Если позволяют финансовые возможности, приветствуется приобретение фирменного программатора от «STMicroelectronics».

Отмеченное списком выше программное обеспечение устанавливается в систему в порядке очерёдности традиционным способом. Практика инсталляции программ на «Windows 10» (32 бит) показала отсутствие каких-либо сбоев. Однако после установки потребуется настроить рабочий инструмент. Как – рассмотрим далее.

Кратко программное обеспечение под STM32

Первый софт списка – «CooCox CoIDE», по сути, представляет редактор программного кода под загрузку в микроконтроллеры STM32. Относительно простая программа с поддержкой многих версий чипов и экспериментальных плат. К тому же, даёт потенциальным пользователям примеры кода, что очень полезно новичкам.

Вторая программа – «GNU Arm Embedded Toolchain», компилятор и компоновщик кода, благодаря которому создаются файлы, пригодные для загрузки в микроконтроллеры STM32. То есть, этот софт обеспечивает создание файлов, к примеру, с расширением «.hex», которые зашиваются в чип посредством программатора «ST-LINK V2». В отличие от навороченного и неоднозначного «CubeIDE», — здесь более простой и удобный вариант программирования.

После установки «CooCox CoIDE» при запуске возможен программный сбой с выводом на экран ошибки загрузки ПО. Чтобы исправить это, достаточно запустить программу от имени «Администратора» или из командной строки, задав путь исполняемого файла. Остальной софт работает без сбоев.

Программирование микроконтроллера STM32 основы

Итак, попытаемся программировать микроконтроллеры STM32 на примере широко распространённой платы с чипом «32F103C6T6». Однако предварительно рекомендуется изучить архитектуру чипов от «STMicroelectronics». Например, для начала следует освоить расшифровку существующих обозначений.

На примере микросхемы «STM32», установленной на рассматриваемой плате, имеющей обозначение «F103C6T6», согласно документации делаем расклад:

  • F – семейство;
  • 103 – тип линии связи;
  • C – число контактов (T – 36, C – 48, R – 64, V – 100);
  • 6 – объём флэш-памяти (6 – 32 кб, 8 – 64 кб, B – 128 кб);
  • T – корпус (H — BGA, I — UFBGA, T — LQFP, U — VFQFPN);
  • 6 – рабочая температура чипа (6 — 85°, 7 — 105°).

Также необходимо изучить так называемую распиновку конкретного устройства (по документации). Опять же, возвращаясь к рассматриваемой экспериментальной плате «F103C6T6», отметим:

Здесь имеют место три порта ввода-вывода (GPIO), обозначенные как «A», «B», «C». Каждый порт содержит определённое число контактов ввода-вывода.

Однако в зависимости от конкретного исполнения и семейства микросхемы, количество портов не ограничивается только тремя.

Как программируют микроконтроллеры STM32 + распиновка
Распиновка экспериментальной платы под программирование и работу с микроконтроллером

Как демонстрирует представленная выше схема устройства, контакты портов ввода-вывода обозначены вкладками цвета розы как «PA0…PB0…PC13…». Функционально эти же контакты могут использоваться под иные нужды. Кроме этого набора пинов, есть контакты:

Следует отдать должное — такого типа экспериментальные платы удачно выстроены под проведение творческих работ в области электроники и программирования электронного «железа».

Практика программирования микроконтроллеров STM32

Итак, предположим, что потенциальный программист освоил азы, обозначенные выше. Теперь на очереди практика программирования. Здесь логичным первоочередным действием видится подготовка чипа к операции прошивки флэш-памяти пользовательским кодом.

Для реализации этого действия экспериментальная плата на базе «STM32F103C6T6» подключается к программатору «ST-Link V2» (см. картинку выше). Схема соединения проводниками (плата -> программатор) соответствующая:

  • GND -> GND,
  • SWCLK -> SWCLK,
  • SWIO -> SWDIO,
  • 3.3 V -> 3.3 V.

Конфигурационные перемычки «Boot» выставляются по схеме: «Boot0 : 1 / Boot1 : 0» , после чего программатор соединяется с USB портом компьютера. Запускается в работу программа «STM32 ST-LINK Utility» (версия 4.1.0.0), где выбирают опцию меню «Connect». Экспериментальная (рабочая) плата подключается к программе, о чём свидетельствует информация в окне содержимого памяти и нижней вкладки системных сведений.

Как программируют микроконтроллеры STM32 + ST-Link
Окно программы «STM32 ST-LINK Utility» (версия 4.1.0.0) после успешного соединения с экспериментальной платой контроллера

В данном случае выполненное соединение необходимо для того, чтобы провести полную очистку флэш-памяти перед процедурой программирования пользовательским кодом. Процесс очистки активируют кликом по пиктограмме «Красный ST-Link» в меню или через опции «Target -> Erase Chip». Затем из программы выходят.

По сути, нет надобности, в данном случае, применять программу «STM32 ST-LINK Utility», так как эта возможность заложена непосредственно в софте «CooCox CoIDE». Но с целью дополнительной проверки работоспособности чипа такой подход явно не будет лишним.

 

Пользовательский код и программирование чипа

Здесь начинается этап создания пользовательского программного кода с последующей компиляцией и прошивкой этим кодом флэш-памяти чипа экспериментальной платы. Используется программа «CooCox CoIDE» (версия 1.7.8) в связке с «GNU Arm Embedded Toolchain» и «STM32 ST-LINK Utility», которую, соответственно, запускают в работу.

Как программируют микроконтроллеры STM32 + CooCox CoIDE
Рабочее окно программы «CooCox CoIDE» (версия 1.7.8) — фактически основного инструмента под программирование микроконтроллеров STM32 для начинающих

Этот софт, однако, нужно настроить. В частности, указать путь до папки «bin» компилятора «GNU Arm Embedded Toolchain». Делается это через опцию «Project -> Select Toolchain Path». Через опцию «Configuration -> Debugger» указывается соответствующий адаптер (ST-Link), если только уже не определён программой.

По завершении настроек можно смело переходить к процедуре создания проекта. Тут определяется тип программируемого чипа, через вкладку «Repository» устанавливаются нужные библиотеки, создаётся пользователем рабочий код для прошивки. Например, такой:

Как программируют микроконтроллеры STM32 + программирование
Программирование флэш-памяти микроконтроллера STM32 – создание кода в интерфейсе программы для последующей компиляции и прошивки

Останется лишь запустить процесс опцией меню «Project -> Build». Если исходный код написан корректно, процедура компиляции пройдёт без нареканий, будут созданы «.hex» и «.bin» файлы. Тогда останется решающий шаг:  опция меню «Flash -> Program Download», что в конечном итоге приведёт к загрузке в память чипа созданного файла прошивки. Вот и всё (для начала). На видео под текстом подробности программирования заметны больше чем в тексте.

Вместо заключения

Представленный здесь вариант программирования микропроцессоров STM32 далеко не единственный и неповторимый. Тем не менее, именно этот вариант, пожалуй, следует рассматривать оптимальным для начинающих разработчиков-программистов. По мере освоения технологии никогда не поздно перенести вектор внимания на другие продукты, включая платные, сделанные под профессиональное использование. Благо таковых имеется в достаточном количестве.

Как дополнение к материалу — видео по теме:

Видеороликом ниже демонстрируется процедура работы с экспериментальной платой на основе микроконтроллера STM32. Тут показано своего рода руководство пользователя по основам программирования такого рода микросхем:

При помощи информации: STMicroelectronics