Быстрое освоение МК 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], повествующей о средствах, рекомендуемых и поддерживаемых компанией. Кратко суть этой презентации отражена на рисунке. Перед началом работы необходимо найти и установить на рабочий компьютер программные средства, показанные на нем.
Аппаратные средства
Нам потребуются:
- Система, управляемая 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.
- www.st.com
- http://www.st.com/st-web-ui/static/active/en/jsp/common/swf.jsp?url=/st-web-ui/active/en/fragment/multimedia/e-presentation/product_pres/ePresSTM32Cube_final.swf&width=850&height=680&title=STM32Cube%20Basics/ссылка утрачена/
- http://www.lctech-inc.com/
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242
- http://www.st.com/web/en/catalog/tools/PF260820
- http://www.st.com/web/catalog/tools/PF258168
- https://www.iar.com/iar-embedded-workbench/arm/, https://www.iar.com/iar-embedded-workbench/downloads/
- https://www.keil.com/demo/eval/arm.htm
- http://www.openstm32.org
- http://timor.atollic.com/truestudio/
- http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00132099.pdf