Некогда появившиеся на белый свет электроники микроконтроллеры STM32 довольно скоро получили высокий уровень популярности среди разработчиков. С тех пор минуло уже без малого два десятка лет, но чипы продолжают оставаться в тренде. Интернет перенасыщен разного рода инструкциями по работе с этими чипами, но среди массы предлагаемых инструктажей крайне редко встречаются реально стоящие и полезные руководства. Здесь ниже представлен очередной инструктаж, конкретно под программирование чипа «STM32F103C6». Насколько полезный и нужный этот опус – судить конечному читателю.
СОДЕРЖИМОЕ ПУБЛИКАЦИИ :
Среда программирования на микроконтроллеры STM32
Как выяснилось после длительного и тщательного изучения рынка программного обеспечения под микроконтроллеры STM32, оптимальным вариантом с точки зрения расходов бюджета видится следующая связка программного обеспечения (скачать тут ниже под WIN 32):
- «CooCox CoIDE» (версия 1.7.8).
- «GNU Arm Embedded Toolchain» (10.3-2021.10).
- «STM32 ST-LINK Utility» (версия 1.0.0).
Этот набор софта (бесплатно распространяемый) вполне позволяет работать с микроконтроллерами 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». Каждый порт содержит определённое число контактов ввода-вывода.
Однако в зависимости от конкретного исполнения и семейства микросхемы, количество портов не ограничивается только тремя.

Как демонстрирует представленная выше схема устройства, контакты портов ввода-вывода обозначены вкладками цвета розы как «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». Экспериментальная (рабочая) плата подключается к программе, о чём свидетельствует информация в окне содержимого памяти и нижней вкладки системных сведений.

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

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

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