STM32F1xx — Инструменты разработчика и FreeRTOS
Традиционно начнем с железа.
В прошлых статьях ядром системы была плата STM32VLDISCOVERY.
Плата, безусловно, хороша, и подкупает тем, что ее цена всего 300 рублей. В принципе, хороший инструмент для того, чтобы начать знакомиться с этим семейством микроконтроллеров. Но.
Дело в том, что при выборе отладочной платы, всегда хочется соблюсти баланс количества и качества, то есть с одной стороны, иметь все необходимое для работы, с другой – не хочется чтобы плата превращалась в огромного и дорогого монстра. У STM32VLDISCOVERY баланс смещен в сторону дешевизны и минимализма.
Полазив по e-bay, я нашел для себя более удобную, на мой взгляд, плату, которую и представляю вашему вниманию. Вот она:
Mini-STM32
- Микроконтроллер STM32F103VE, имеющий на борту 512 килобайт флеша и 64 килобайта RAM, USB, SDIO (то есть с карточки читать будет намного быстрее, чем по SPI). Кроме того, так как на плате установлена 100-ногая его версия, у него хватает внешних пинов для управления памятью через FSMC. FSMC – это Flexible Static Memory Controller, очень удобный контроллер статической памяти, начиная с, собственно, SRAM и заканчивая NAND флешками. Настроив его и подключив память к управляющим пинам, мы получаем нашу память, мапированную на адресное пространство контроллера. То есть, с этого момента, все взаимодействия с ней будут для нас прозрачны и эквивалентны простой записи в RAM.
- Цветной TFT-дисплей с разрешением 320х240 и предустановленным резистивным тач-скрином. Дисплей ставится на плату в виде модуля, при желании, можно отвинтить стоечки, к которым он крепится, и использовать плату без него. В дисплейный модуль, помимо дисплея входит еще и повышающий преобразователь для питания его подсветки, а также контроллер тач-скрина, который управляется по SPI. Кроме того, разъем подключен к упомянутому выше FSMC, что делает взаимодействие с ним в разы удобнее.
Для примера – вот так выглядит запись в регистры дисплея, а после – в его память, с использованием DMA:
Теперь то, что касается IDE. Изначально я выбрал Keil uVision, так как когда-то уже работал с ней.
Ну, что я могу сказать – я проработал в кейле достаточно, и в принципе с ним можно примириться. Но, положа руку на сердце – ИДЕ там ужасна. Также ужасна как и ИДЕ IAR’a, на мой взгляд.
IAR и Keil – признанные лидеры в разработке компиллеров, этого у них не отнять, но я до сих пор не могу понять, почему, имея такие компиллеры, они продолжают тянуть свои IDE, застрявшие по удобству на уровне 2002 года. Как пример могу привести Texas Instruments – у них раньше тоже была своя IDE, в довесок к компиллеру. Потом им это надоело, они взяли Eclipse, допилили его, прикрутили к своим компиллеру и профайлеру, и получили отличный продукт. Почему так не поступят Keil и IAR для меня остается загадкой, но на мой взгляд их IDE не такие удобные, как могли бы быть. Раздражает не очень удобная подсветка синтаксиса, полное отсутствие code-completion’а, не самая удобная навигация по коду. Плюс, uVision частенько у меня падала, но это можно списать на драйвер программатора.
Как бы то ни было, я стал искать альтернативу и нашел ее в виде CooCox IDE.

Это бесплатная среда разработки на базе эклипса, которая призвана работать, разумеется, с GCC.
Из плюсов отмечу все достоинства эклипса – удобная навигация, есть автозавершение кода и т.п.
Кроме того прикручен удобный просмотрщик периферии процессора, мне понравился больше чем Кейловский. Очень удобно наличие репозитория компонентов – говоря по-простому, при старте проекта мы как в визарде выбираем нужный нам процессор из списка, после чего отмечаем галочками те из модулей Standard Peripheral Library, которые хотели бы использовать, и они автоматически подключаются к проекту (Об этом чуть подробнее в следующем разделе статьи). Также сразу же можно просмотреть примеры, идущие в комплекте с этим модулем SPL и справку по его функциям.
Минусы CooCox IDE вобрала также из Eclipse, к коим относится тяжеловесность – у меня она потребляет около 180 метров оперативной памяти, занимая на диске 800 мегабайт.
Еще одним минусом является ее работа с этим самым J-Link-ком. Отладка происходит через приложение от создателей J-Link’a, предоставляющее стандартный gdb-шный интерфейс, но почему-то среда при каждом дебаге это приложение перезапускает, в отличие от того же кейла (который вообще работает через свои дллки).
Поэтому старт отладки в Кейле начинается через секунду, в CooCox же – через секунд 20. Возможно, это можно как-нибудь исправить настройками, но я пока таких настроек не видел, поэтому буду благодарен, если кто подскажет.
Тем не менее, я все таки остановился на CooCox — если вас тоже не устраивает IDE от Keil или IAR, или вы не хотите пользоваться ломанным ПО и предпочитаете опенсорс – качайте не задумываясь.
CooCox и FreeRTOS
Об операционной системе FreeRTOS было сказано много, в частности, на хабре (вот, например, одна из статей: FreeRTOS: введение)
Я решил тоже приобщиться к этой технологии и расширить свой арсенал инструментов, тем более, что FreeRTOS не навязывает никакого HAL (Hardware Abstraction Layer, слой абстракции от оборудования, драйверы то бишь), и предоставляет только средства работы с задачами, синхронизацию и меж-процессное взаимодействие, поэтому во многих случаях будет очень удобна.
Рассмотрим поподробнее, что же нам необходимо, чтобы использовать FreeRTOS вместе с CooCox IDE на нашей плате Mini-STM32.
На самом деле, все очень просто. Архитектурное портирование (портирование кода, требуемого шедулером под архитектуру Cortex M3) уже давно выполнено, и нам нужно, по сути, просто правильно составить проект для CooCox.
Начинаем с того, что скачиваем исходники FreeRTOS с их официального сайта.
Вот прямая ссылка: http://sourceforge.net/projects/freertos/files/.
Тем временем создаем новый проект в CooCox, я назвал его FreeRTOS-Mini.

Выбираем в визарде производителя ST, в списке чипов – чип, на котором построена отладочная плата, STM32F103VE.


После этого перед нами открывается уже упомянутое окошечко репозитория компонентов, представляющих собой части SPL.

Выбираем там CMSIS Core и CMSIS Boot – это собственно ядро CMSIS и стартовый код, который производит настройку и дергает main()
Кстати, обратите внимание – в CooCox стартовый код написан целиком на C, ни одной асмовой строчки. Лежит в файле cmsis_boot\startup\startup_stm32f10x_hd.c – запомните этот путь, нам нужно будет там кое-что подправить. Заодно добавляем в проект модуль GPIO, чтобы было что поделать в тестовом таске FreeRTOS. Этот модуль автоматом потянет за собой зависимый RCC, отвечающий за настройку клоков.
Теперь возвращаемся к скаченным исходникам FreeRTOS. Для начала скопируем всю папку в папку с нашим проектом. После, начнем удалять лишнее. Итак, лично у меня под нож сразу пошло содержимое папки Demo – там лежат демо-приложения для разных контроллеров, вся папка вам не нужна в любом случае, но при желании можно оставить то, что относится к STM32F103. Единственное, что нам оттуда обязательно понадобится – файл настроек ядра FreeRTOS, который можно взять из любого подходящего проекта, допустим отсюда: Demo\CORTEX_STM32F103_Primer_GCC\FreeRTOSConfig.h
Его можно скопировать в любую папку инклудов, я лично положил в самый корень проекта, рядом с main.c
Далее, в папке source\portable есть множество под-папок, где лежит код, рассчитанный на разные компиллеры и среды. Заходим в папку source\portable\GCC\ARM_CM3, копируем ее двумя уровнями выше, в source\portable. Обращаем внимание на папку source\portable\MemMang – она нам тоже понадобится. Поэтому удаляем все, кроме source\portable\MemMang и свежескопированной source\portable\ARM_CM3
После этого кликаем правой кнопкой в прожект эксплорере CooCox, нажимаем Add Linked Folder и добавляем нашу папку с подготовленными исходниками FreeRTOS. В итоге должно получиться вот такое дерево проекта:

Теперь начинаем править файлы проекта. Начнем с настроек ядра. Оттуда нам нужно будет убрать только пару строчек, связанных со старым проектом – левый, ненужный нам инклуд.
Все остальное можно оставить без изменений, а можно прочитать статью о настройке ядра FreeRTOS и поменять опции по необходимости, этим мы сейчас заниматься не будем.
Теперь идем в стартап код (cmsis_boot\startup\startup_stm32f10x_hd.c) и делаем следующее: находим строки:
У меня это строки 114-122, и добавляем после них такой код:
Это обработчики прерываний из ядра ОС, которые объявлены в файле port.c. Теперь нам нужно запихнуть их в вектор прерываний, который идет ниже (строки 129-209):
Соответственно, меняем вектор так, как написано в вышеизложенном коде, заменив строки, отмеченные SVCall Handler, PendSV Handler, SysTick Handler на vPortSVCHandler, xPortPendSVHandler и xPortSysTickHandler соответственно.
UPD:
В комментариях мне подсказали более изящный вариант, чем ковыряние стартового файла. Достаточно просто переопределить обработчики следующими дефайнами:
После открываем в дереве проекта папку Source\MemMang, и выбираем ту реализацию мемори менеджмента, которая нам подходит. Подробнее об этом написано тут: FreeRTOS Memory Management.
Если коротко – файл номер 1 это упрощенная реализация с выделением памяти, но без освобождения, файл номер 2 – более продвинутая реализация, позволяющая освобождение памяти, и номер 3 – реализация, которая потребует от вас библиотеки с реализованными malloc и free. Я выбрал вторую реализацию, оставшиеся два файла исключаем из компиляции, кликнув правой кнопкой на имя файла в дереве проекта и выбрав пункт Exclude from build.
Осталось совсем чуть-чуть – открываем файл main.c, добавляем туда нужные нам инклуды от SPL:
Инклуды от FreeRTOS:
После объявляем функцию, которая будет вызвана до старта шедулера, в соответствии с рекомендациями в таком виде:
И функцию, которая будет исполнять роль нашего тестового таска, вот так:
Реализация функций выглядит так:
В тестовых целях ничего полезного не написал, задача просто зажигает светодиод на плате.
Осталась сама функция main(), которая стартанет задачу и шедулер:
Вот в принципе и все. Осталось настроить дебаг – для этого жмем «Debug configuration», во вкладке Debugger выбираем наш программатор (J-Link) и порт JTAG.
Ставим галочку Run To Main, чтобы не барахтаться в стартап-коде, в строке GDBServer cmdline tool указываем путь к экзешнику, идущему с программатором (скачать можно с сайта Segger), у меня это C:\SEGGER\JLinkARM_V440b\JLinkGDBServerCL.exe
После жмем Apply и Close.
Теперь компиллим наш проект и жмем на дебаг – если все получилось, после аплода и выполнения, должен загореться светодиод.
Заключение
Правильный выбор инструментов разработчика, безусловно, обеспечит наиболее быстрое и комфортное освоение новых технологий. Я надеюсь, что, осветив в данной статье отладочную плату Mini-STM32 и CooCox IDE, я помог разработчикам приглядеться к новому инструменту. Что касается операционной системы FreeRTOS – это бесспорно очень мощное средство, и, на мой взгляд, хорошая ступень, для перехода от программирования прошивок «в лоб» к использованию эмбеддед операционных систем.
stm32
Интегрированные среды разработки (IDE)
System Workbench для STM32 — это бесплатная среда разработки в Windows, Linux и OS X. Описание от ST Microelectronics :
- Всесторонняя поддержка микроконтроллеров STM32, плат STM32 Nucleo, наборов Discovery и оценочных плат, а также прошивки STM32 (стандартная периферийная библиотека или STM32Cube HAL)
- Компилятор GCC C / C ++
- Отладчик на основе GDB
- Eclipse IDE с управлением коллективной работой
- Совместимость с плагинами Eclipse
- Поддержка ST-LINK
- Нет ограничения размера кода
- Поддержка нескольких ОС: Windows®, Linux и OS X®
Монтаж
- Перейдите по ссылке : http://www.openstm32.org/HomePage .
- Зарегистрируйтесь и войдите на сайт.
- Перейдите на страницу: http://www.openstm32.org/Downloading+the+System+Workbench+for+STM32+installer .
- Загрузите последнюю версию для вашей операционной системы.
- Запустите загруженный установщик.
IAR-EWARM
Вступление
IAR Интегрированная среда разработки и оптимизация компилятора C / C ++ для ARM Cortex-M. Описание от ST Microelectronics :
- Ключевые компоненты:
- Интегрированная среда разработки с инструментами управления проектами и редактором
- Высоко оптимизирующий компилятор C и C ++ для ARM®
- Автоматическая проверка правил MISRA C (MISRA C: 2004)
- Соответствие ARM® EABI и CMSIS
- Расширенная поддержка целевой системы HW
- Дополнительные I-jet и JTAGjet ™ -Trace внутрисхемные отладочные датчики
- Отладка мощности для визуализации потребления энергии в корреляции с исходным кодом
- Библиотеки времени выполнения, включая исходный код
- Перемещение ARM® ассемблера
- Линкеровщик и библиотекарь
- Отладчик C-SPY® с симулятором ARM®, поддержка JTAG и поддержка отладки RTOS для аппаратного обеспечения
- Плагины RTOS, доступные от IAR Systems и поставщиков RTOS
- Более 3100 типовых проектов для оценочных плат от разных производителей
- Пользовательские и справочные руководства в формате PDF
- Контекстно-зависимая он-лайн помощь
- Чип-специфическая поддержка:
- 4300 проектов, в том числе для оценочных плат STMicroelectronics
- Поддержка 4 Гбайт-приложений в режимах ARM® и Thumb®
- Каждая функция может быть скомпилирована в режиме ARM® или Thumb®
- Генерация копроцессора с векторной плавающей точкой VFP Vector Floating Point
- Встроенная поддержка NEON ™
- Поддержка аппаратной отладки:
- STMicroelectronics ST-LINK V2: поддерживает устройства STM32
- STMicroelectronics ST-LINK: поддерживает устройства STM32
- Поддержка RTOS: обратитесь на веб-сайт IAR http://www.iar.com
- Поддерживаемые устройства: обратитесь на веб-сайт IAR http://www.iar.com
Монтаж
Atollic — TrueSTUDIO
Вступление
C / C ++ IDE для разработки ARM.
Atollic TrueSTUDIO® протестирован и проверен в следующих операционных системах:
- Microsoft® Windows®Vista (32-разрядная версия)
- Microsoft® Windows® Vista (64-разрядная версия)
- Microsoft® Windows® 7 (32-разрядная версия)
- Microsoft® Windows® 7 (64-разрядная версия)
- Microsoft® Windows® 8 (64-разрядная версия)
- Microsoft® Windows® 10 (64-разрядная версия)
- Поддержка Linux ожидается конец 2016 года Q4
- Поддержка Mac OS X ожидается 2017 Q2
TrueSTUDIO доступен только как 32-битное приложение.
Монтаж
Продукт Atollic TrueSTUDIO поставляется в качестве исполняемого установщика. Убедитесь, что учетная запись пользователя, с которой запущен установщик, имеет административные привилегии. Во время установки нет необходимости в регистрации или подключении к Интернету. Когда TrueSTUDIO установлен, он будет работать в режиме Lite, если лицензии не обнаружены.
- Перейдите по ссылке : http://atollic.com/resources/downloads/ .
- Загрузите последнюю стабильную или последнюю бета-версию.
- Запустите программу установки.
CoIDE
Вступление
CooCox CoIDE — бесплатная и высокоинтегрированная среда разработки программного обеспечения для MCU ARM Cortex. Описание от ST Microelectronics :
Быстрое освоение МК STM32
В настоящее время рынок микроконтроллеров переживает настоящее нашествие изделий, выполненных на платформе ARM. Устройства серии STM32 от STMicroelectronics (STM), безусловно, находятся в авангарде этого движения. Компания предлагает целую гамму изделий различной стоимости и производительности. При этом от разработчика часто требуется только подключить внешний кварцевый резонатор, а вся мощная периферия уже содержится внутри кристалла. Что касается производительности — зачастую даже самые дешевые чипы (стоимостью менее $10) превосходят по характеристикам персональные компьютеры первых поколений. Так, например, один из самых простых микроконтроллеров (МК) серии STM32F1 имеет внутреннюю тактовую частоту 72 МГц (для сравнения: CPU Intel 486, вышедший в 1989 г., имел тактовую частоту всего 16 МГц).
Однако указанные особенности МК STM32 порождают некоторые проблемы: даже самые простые чипы оказываются чрезвычайно «навороченными» и требуют определенного времени на освоение. Действительно, экспертом по STM32 невозможно стать за неделю или даже за месяц. Но в то же время разумная и продуманная архитектура и правильный выбор средств разработки позволяют быстро освоить данное устройство, совмещая решение поставленной задачи с процессом обучения.
Основы
Перед тем, как приступить непосредственно к программированию, необходимо, как минимум, приобрести набор разработчика и установить на компьютер целый ряд программных средств, необходимых для написания кода, его загрузки в МК и последующей отладки. Таких средств на текущий момент существует огромное количество, поэтому перед новичком стоит непростая задача выбора. Мы предлагаем начать с организации профессионального процесса разработки. При этом правильный выбор средств и технологии разработки имеет решающее значение.
Возможно, кто-то скажет, что ему для работы достаточно бесплатного кросс-компилятора GCC для ARM. Но такой подход представляется нам неоптимальным. Профессиональным же подходом, на наш взгляд, будет освоение многочисленных сторонних наработок, умение пользоваться стандартными библиотеками и т. д. Установка какой-либо популярной среды проектирования не решает проблему подбора средств разработки, поскольку экосистема проектирования кода для ARM значительно сложнее, чем просто среда разработки (IDE), и для эффективной работы знать ее необходимо.
Экосистема STM32
Если сузить задачу и ограничиться только экосистемой STM32, то начинать надо с сайта STM [1]. Новичкам мы советуем прежде всего ознакомиться c презентацией [2], повествующей о средствах, рекомендуемых и поддерживаемых компанией. Кратко суть этой презентации отражена на рисунке. Перед началом работы необходимо найти и установить на рабочий компьютер программные средства, показанные на нем.

Рисунок. Экосистема обеспечения процесса разработки для STM32
Аппаратные средства
- Система, управляемая MC STM32. Это может быть отладочная плата, собственное изделие и т. д.
- Кабель STLINKV2 для программирования и отладки.
- В случае если наше устройство работает под управлением хоста, потребуется обеспечить связь между хостом и отлаживаемым устройством. Проще всего это сделать с помощью моста USB<->UART (Внимание!Такой мост должен обеспечивать уровни 3,3 В).
Все указанные средства можно приобрести во многих компаниях и интернет-магазинах. Оригинальное оборудование от STM стоит недорого, а изделия китайских производителей, например компании lctech inc. [3], еще дешевле.
Программные средства
Рекомендуем начинать работу с графического конфигуратора STM32CubeMX. Его можно загрузить с ресурса [4]. Он обеспечивает конфигурирование как отдельных чипов, так и наборов разработчика, выпускаемых компанией STM, таких как Discovery, Nucleo и др. Безусловно, конфигурирование на уровне платы происходит легче и быстрее, поэтому если приоритет отдается скорости разработки, то лучше выбирать из поддерживаемых наборов разработки. Если же требуется максимально сократить стоимость аппаратуры, то можно выбрать изделие какой-либо китайской компании с хорошей репутацией.
Далее, нам необходимо рабочее пространство для наших проектов. Самый простой способ — просто загрузить готовое. В зависимости от типа используемого контроллера используются разные рабочие пространства. Например, для устройств типа STM32F1xx необходимо загрузить рабочее пространство STM32CubeF1 [5].
В рабочем пространстве в огромном количестве находятся примеры хорошо выполненного программного кода, которые могут быть использованы в нашем собственном проекте as is либо с минимальными изменениями. Также там находятся необходимые в работе стандартные библиотеки. Использование уже готового рабочего пространства позволяет в разы сократить время освоения устройств типа STM32 и сократить потребность в поиске нужной информации. Рабочее пространство поставляется в виде архива, который необходимо просто разархивировать в удобное для разработчика место.
Далее может понадобиться пакет STM32 ST-LINK Utility, содержащий в себе визуальные и консольные средства отладки для работы с кабелем STLINKV2. Его можно загрузить со страницы [6]. Не исключено, что данный пакет уже присутствует в составе выбранной IDE, но иметь самую свежую версию всегда приятно.
Выбор среды разработки для STM32
Имеется огромное количество различных IDE для STM32 под любые используемые платформы. Они бывают свободными, коммерческими, а также ограниченно-бесплатными. Но, к сожалению (а может быть, к счастью), стандартное рабочее пространство поддерживает на текущий момент только четыре среды проектирования:
- EWARM компанииIAR Systems, лицензия Commercial, Free-limited [7];
- MDK-ARM компании Keil, лицензия Commercial [8];
- SW4STM32 компании Ac6, Free [9];
- TrueStudio компании atollic, лицензия Lite — free, Pro — 49 euro/month [10].
Дополнительные библиотеки
В качестве дополнительных библиотек используются различные пакеты, например стек TCP-IP lwIP или ОС реального времени FreeRTOS. Часть из них уже предустановлена в рабочем пространстве, а недостающие можно загрузить как утилитой STM32CubeUpdater, дистрибутив которой поставляется в составе рабочей области, так и средствами IDE. Не исключено, что в редких случаях, возможно, придется устанавливать сторонние средства вручную.
Библиотеки являются необходимым инструментом для быстрой и эффективной работы. Кроме того, они позволяют выполнять работу максимально стандартным образом и, следовательно, дают возможность при необходимости получить помощь огромного сообщества разработчиков. Мы рекомендуем (особенно в начале) работать с аппаратными ресурсами микроконтроллеров STM32 через специальную библиотеку с названием HAL (Hardware Abstraction Level). Описание библиотеки (для серии F1) приведено в [11].
Выводы
Итак, как было показано, все перечисленные программные средства можно скачать из Интернета, установить на рабочий компьютер, сконфигурировать за один день и в тот же день написать свою первую программу для STM32.
В дальнейшем мы планируем продолжить тему, показав, как можно написать простую программу, обменивающуюся с хостом по последовательному порту при помощи стандартных средств языка C — printf и scanf.
Русские Блоги
Сравнение и выбор из нескольких IDE разработки STM32
Есть много IDE, разработанные для STM32 и ST на сайте.Закончено 19Там, где общая коммерческая версия программного обеспечения:
- MDK-ARM-STM32
- IAR-EWARM
Хотя эти две коммерческие версии полезны, они будут коммерческим программным обеспечением. Свободный или ознакомительная версия программного обеспечения либо с пределом ограничения модели устройства, либо емкость программы.
Есть много Ид развития свободной STM32, в основном на основе Eclipse, + GNU GCC.
Существует учебник в Интернете, как построить Eclipse, + GNU GCC для создания среды разработки STM32, но этот процесс больше неприятностей, а потому, что другая версия, содержание каждого учебника отличается. Я сделал несколько попыток быть успешным.
STMicroelectronics теперь развитие HAL + STM32Cubemx, а программное обеспечение STM32Cubemx может визуализировать ресурсы чипа и конфигурацию контактов, а также генерировать все программы источника проекта. В настоящее время IDE или инструмент цепи поддерживается экспорт проекта STM32Cubemx показано ниже.

Свободный IDE можно найти на рисунке, только два из TrueSTUDIO и SW4STM32. Оба Иды являются затмением, и установщик интегрирован полное развитие STM32 требует разнообразных плагин, которые требуют дополнительной настройки.
Я на самом деле установить эти два программного обеспечения, а также генерировать простой GPIO-управляемый светодиодный проект с STM32Cubemx и протестировать его с платой разработки.
-
Отладки SW4STM32 весьма проблематично. Это очень просто, чтобы умереть в отладки, и та же функциональность не имеет никаких проблем в MDK и TrueSTUDIO.
TrueSTUDIO может быть интегрирован с STM32Cubemx, и нет никаких проблем с программой компиляции, загрузки и ввода в эксплуатацию.
Наиболее важным является: Atollic компании в TrueSTUDIO теперь приобрела STMicroelectronics.

TrueSTUDIO теперь совершенно бесплатно. STMicroelectronics придется активно развивать свои IDE инструменты в будущем поддержку TrueSTUDIO, Stm32cubemx для TrueSTUDIO также не должно быть никаких проблем. В этом случае, другие Затмения + GCC свободный свободные Иды не имеют преимуществ для TrueSTUDIO.
Система Workbench (т.е. SW4STM32) разрабатывается AC6 совместно поддерживается с STMicroelectronicsОткрытое Сообщество STM32Один свободный инструмент не может быть STMicroelectronics инструменты официальной разработки.
Существует также бесплатный инструмент развития Coocox COIDE, который находится в первом месте в IDE, перечисленный на официальном сайте ST, и базируется на Eclipse, + GCC. В дополнении к среде IDE, имеется COSMART для конфигурации устройства визуализации, подобно STM32Cubemx (но тока COSMART не поддерживают устройства серии STM32, поддерживают только устройства Holtek, Nuvoton). Хотя особенность серии инструмента Coocox является более всеобъемлющей, экспортным проект STM32Cubemx не поддерживает Coide, что явно не как это возможно, чем несколько Ид поддерживаемых STM32Cubemx в эффективности разработки.
Потому что для разработки некоторых учебных примеров для доски развития STM32F4, TrueSTUDIO окончательно выбрана в качестве инструмента развития STM32 после различных тестов сравнения.