В прошлом посте, посвященном STM32, мы познакомились с платами Nucleo, программой STM32CubeMX, узнали, как программировать под STM32 в Linux, а также осилили базовые операции с GPIO. Сегодня же мы поговорим об использовании аппаратной реализации UART. В рамках данного поста мы будем использовать UART исключительно для обмена данными с компьютером. Однако с тем же успехом его можно применять и для взаимодействия с внешними модулями.

Год назад я писал о бейдже в форме матрешки, который можно было получить на конференции ZeroNights 2016. В этом, или точнее, уже прошлом, 2017 году, на ZeroNights у организаторов одного из железных стендов также можно было получить плату-бейдж. На сей раз плата называлась Кракен и имела форму осьминога (или ананаса, смотря какой стороной повернуть :D). Кракен представляет собой отладочную плату на базе STM32F405RGT6. Насколько я смог выяснить, плату разработали Арсений Жгилев и Антон Канышев.

Ранее мы выяснили, как разрабатывать под микроконтроллеры STM32 с использованием знакомой и понятной многим Arduino IDE. Этот подход, впрочем, не лишен недостатков. В частности, он (1) вводит лишние слои абстракции, что не позволяет писать максимально эффективный и компактный код, (2) работает с весьма ограниченным множеством микроконтроллеров и плат, а также (3) привязан к конкретной среде разработки, и не самой лучшей. Поэтому сегодня мы научимся разрабатывать под STM32 по-взрослому.

Тема программирования микроконтроллеров ранее многократно поднималась в этом блоге, но исключительно в контексте микроконтроллеров AVR и, соответственно, Arduino. Сегодня же речь пойдет о микроконтроллере STM32F103C8T6 на базе ядра ARM 32 Cortex-M3. Вы наверняка слышали об архитектуре ARM — она используется в большинстве современных телефонов и планшетов, а также Raspberry Pi, полетных контроллерах для квадрокоптеров, и много где еще.