Stm32 программирование: от включения питания до «Hello, World» / Хабр

Содержание

Программирование STM32

Программирование STM32

ПРОГРАММИРОВАНИЕ


МИКРОКОНТРОЛЛЕРОВ STM32
БАЗОВЫЙ КУРС

2 года подготовки, ​100 видеоуроков, общей продолжительностью 37 часов, в которых раскрыты самые важные основы микроконтроллеров stm32.

  • Схемотехника подключения микроконтроллеров stm32
  • Работа в фирменной среде CubeIDE
  • Использование встроенного конфигуратора для генерации кода
  • Работа с ядром Cortex
  • Использование инструментов отладки программы

Автор Селиванов Максим

Кому подойдет этот курс?

Разработчикам электроники

   Если вы начинающий или среднего уровня разработчик, то данный курс вам будет особенно полезен. В настоящее время многие фирмы используют в своих разработках микроконтроллеры STM32. Во многих странах СНГ, использование STM32 в профессиональной сфере стало почти стандартом де факто. Знание этих микроконтроллеров позволит вам претендовать на гораздо более высокий оклад.

Фрилансерам

   Современные проекты требуют больших вычислительных ресурсов и больших объемов памяти. Благодаря очень широкой линейке STM32 как нельзя лучше подходят для решения самых сложных современных задач, за которые заказчики готовы платить больше всего. 
   Чем лучше вы будете владеть инструментами для работы с stm32, тем быстрее и качественнее сможете решать самые сложные задачи. А глубокое понимание основ позволит избежать трудноуловимых ошибок, которые, как это не редко бывает, появляются уже после сдачи проекта заказчику.

Студентам

   ​В настоящее время во многих вузах преподают основы архитектуры ARM на примере ядер Cortex-M и практику программирования stm32. 
   Основная сложность при изучении stm32 и ядер Cortex-M состоит в том, что очень мало литературы на русском языке, а та литература, которая есть слишком теоритезированна.

Изучение ядра Cortex в отрыве от практики имеет очень низкую эффективность. Если теория из книги никак не подкреплена практикой, то большая часть материала остается совершенно непонятной. 
   В данном курсе есть много видео, которые посвящены изучению работы ядра Cortex. Большая часть теории сопровождается практическими примерами использования. Такой подход позволяет намного глубже понять основы работы ядер Cortex. 

Ардуинщикам

  Если вы увлекаетесь электроникой и Arduino и хотите вывести свое хобби на новый уровень, то вам не обойтись без использования stm32. Возможностей AVR микроконтроллеров сегодня хватает только на самые простые проекты. 
   Да, существуют платы на stm32, которые так же поддерживаются средой arduino, но этих плат очень мало по сравнению с более чем 1800 различных микроконтроллеров stm32, что значительно сужает окно выбора подходящего микроконтроллера. А из-за требований совместимости кода, среда arduino сильно урезает возможности STM32.

 
   Возможно, вы опасаетесь, что переход будет слишком сложным, но это не так. Среда CubeIDE со встроенным конфигуратором начальной настройки и библиотека HAL позволяет значительно упростить порог вхождения в STM32. Программирование в среде CubeIDE становится таким же простым как и в среде Arduino!

Что вы получите, изучив данный курс?

  •   Освоите мощный и современный инструмент для решения большинства современных задач
  •   ​Пропадет неуверенность перед использованием всех микроконтроллеров stm32
  •   Значительно повысете квалификацию в области разработки встраиваемых систем
  •   Упорядочите свои занния по теме программирования STM32
  •   Значительно ускорите разработку и отладку программ
  •   Повысите надежность работы программ на stm32

Что особенного в этом курсе?

  •   Последовательное изучение от простого к сложному. Такой подход позволяет освоить даже самые сложные темы.  
  •   Очень глубокое изучение внутреннего устройства микроконтроллеров stm32 и ядра Cortex в частности
  •   ​Закрепление теоретических знаний на практике. Даже самая сложная для понимания теория станет простой после изучения нескольких практических примеров

Что вы найдете в курсе?

  •   100 видео по самым разным темам прямо или косвенно связанным с STM32  
  •   ​​Шпаргалки по внутренней организации stm32, схемотехнике, настройке периферии и т.д
  •   ​Исходные коды проектов из видео с подробными комментариями

Vanyamba uses Linux — Программирование микроконтроллеров STM32

Микроконтроллеры STM32 обратили на себя моё внимание двумя новостями. Первая новость была о выпуске платы STM32F4DISCOVERY, которая оснащена аудио-кодеком и микроконтроллером с ядром ARM Cortex-M4 с набором DSP-команд. Вторая новость была о выпуске платы Olimexino-STM32, представляющую из себя Arduino-совместимую плату на базе микроконтроллера STM32F103RB.

В ожидании появления обеих плат на рынке, я приобрёл себе плату Olimex-h203 и недорогой JTAG-отладчик ARM-USB-OCD, чтобы начать осваивать микроконтроллеры STM32 в операционной системе Linux.

Дело в том, что возможность программировать микроконтроллеры STM32 посредством интерфейса ST-Link/V2 в то время была доступна только в операционной системе Windows, к тому же отладчик OpenOCD можно использовать и для программирования других ARM-микроконтроллеров, например AT91SAM. К тому времени уже полгода у меня пылилась на полке плата Olimex-H64, так что для меня это был хороший повод приобрести JTAG-отладчик, чтобы не мучиться с попытками освоить SAM-BA и TCL.

Выбор отладочной платы

Успешно освоив 8-битные микроконтроллеры, спаяв несколько плат собственной разработки на их основе, я пришёл к выводу, что 32-битные микроконтроллеры удобнее осваивать, используя готовые отладочные платы, прежде чем пробовать разработать и спаять собственную плату.

В случае микроконтроллеров STM32 выбор платы в первую очередь основывается на выборе интерфейса программирования. Это либо IEEE 1149.1 JTAG, либо SWD-отладчик ST-Link. Лично я как пользователь Linux предпочитаю JTAG, поскольку программирование ARM-микроконтроллеров посредством JTAG в Linux поддерживается на базе открытых технологий, хотя по степени глючности оба варианта пока что не превосходят друг друга.

Платы STM32 серии DISCOVERY

В качестве стартовых отладочных плат для своих микроконтроллеров компания ST Microelectronics выпускает недорогие платы серии DISCOVERY, оснащные встроенным отладчиком ST-Link/V2.

Для разработки и программирования этих плат в Linux требуется скачать и настроить IDE-среду разработки Eclipse. В принципе, после успешной настройки программисту доступна даже возможность пошаговой отладки программы, но на практике при переходе из режима отладки обратно в режим программирования периодически происходит какой-то сбой, так что повторно войти в режим отладки у меня лично получалось через раз. Так что я предпочитаю программировать микроконтроллер из командной строки с помощью утилиты texane/stlink.

Платы STM32 с JTAG

Сторонние разработчики оснащают отладочные платы на базе микроконтроллеров STM32 интерфейсом IEEE 1149.1 JTAG для программирования и отладки. Эти платы стоят немножко дороже, но их можно программировать с помощью GDB-сервера OpenOCD.

Однако стоит учесть и то, что для программирования потребуется приобрести JTAG-программатор, в чём OpenOCD в силу своей универсальности как раз и имеет преимущественно перед встроенным ST-Link в платах серии DISCOVERY.

Программная поддержка периферийных устройств

В целом в программировании микроконтроллеров STM32 нет ничего принципиально сложного благодаря тому, что программирование периферийных устройств микроконтроллера осуществляется на основе стандартной библиотеки микроконтроллеров Cortex CMSIS (Cortex Microcontroller Software Interface Standard).

Скачав и установив Standard Peripheral Library для выбранной линейки микроконтроллеров STM32, можно попробовать скомпилировать примеры из папки StdPeriph_Examples, хотя для среды Eclipse и ARM-GCC скорее всего потребуется использовать один из базовых проектов, скопировав необходимые файлы из папки с примером в папку проекта.

Учебники по

STM32. Программирование на ARM — Курс STM32

DEEPBLUE

MBEDDED

Учебники / Статьи / Проекты / Курсы

Встраиваемые системы — Электроника — Прошивки — Микроконтроллеры — DSP

IoT — Системы управления — ПК Дизайн B – все ЕЭК!

 Изучить архитектуру ARM-Cortex M3 и M4

 Понять внутреннее устройство микроконтроллера STM32

✔ 900 16  Интерфейс различных периферийных устройств внутри микроконтроллеров STM32

 Разработка реконфигурируемой многократно используемой микропрограммы (встроенных программных компонентов) на языке программирования C на основе драйверов ST HAL и LL / Прямой доступ к памяти

 Интерфейс Различные устройства отображения (7-сегментный, буквенно-цифровой ЖК-дисплей, OLED, TFT и т. д.)

 Интерфейс различных устройств ввода (кнопки, поворотные энкодеры, клавиатура, HMI TouchPAD и т. д.)

 Управление несколькими типами приводов (двигатели постоянного тока, серводвигатели, шаговые двигатели и т. д.)

 Выполнение последовательной связи через USART/SPI/I2C и разработка приложений USB (CDC, HID, Mass Storage и т. д.)

И многое другое…

ПОСМОТРИТЕ АКЦИЮ КУРСА STM32!

В этом курсе вы изучите основы архитектуры микроконтроллеров STM32 на базе ARM, аппаратных периферийных устройств STM32 и разработаете некоторые интерфейсные компоненты встроенного ПО верхнего уровня, которые можно настраивать и повторно использовать в различных проектах.

  • + 50 Учебные пособия
  • + 80 Практические лабораторные примеры
  • + 25k Строк кода (прошивки, драйверы и библиотеки)
  • 90 071

    STM32 TUTORIALS GITHUB REPO​

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

    ECUAL / Основные драйверы, которые мы будем разрабатывать с помощью руководств по STM32, которые включают в себя (серводвигатели, ЖК-дисплей, шаговый двигатель, ультразвук, датчики температуры, MPU6050 IMU, nRF24L01+, TFT и т. д.).

    МАТЕМАТИКА  / Все дополнительные математические функции, которые нам понадобятся в лабораторных работах/проектах на протяжении всего курса. Такие вещи, как цифровые фильтры, алгоритмы, отображение и тому подобное.

    util  / Сюда пойдут все дополнительные программные функции, основанные на реальном оборудовании и так или иначе поддерживающие основное приложение. Такие вещи, как программные задержки (с таймерами или DWT) и так далее.

    ESP32 Repo

    STM32 TUTORIALS (COURSE) KIT​

    Щелкните ссылку ниже, чтобы просмотреть полный комплект оборудования для курса.

    Необходимые макетные платы, датчики, модули и приводы для всех практических лабораторий/проектов. Вам может понадобиться дополнительное оборудование, если вы планируете создавать более конкретные проекты.

    СПИСОК УЧЕБНЫХ ПОСОБИЙ STM32 ПО КАТЕГОРИЯМ​

    Основные учебные пособия

    Связь, Интернет вещей и беспроводная связь

    Датчики

    9 0002

    Блоки индикации и ЧМИ

    Двигатели, приводы и приводы

    Модули

    СПИСОК УЧЕБНЫХ ПОСОБИЙ STM32

    ПОДЕЛИТЬСЯ СТРАНИЦЕЙ ЭТОГО КУРСА!

    ПОДДЕРЖАТЬ ЭТУ РАБОТУ?

    Вы нашли этот ресурс полезным? Если да, рассмотрите возможность поддержки этой работы любым из следующих методов.

    Это единственный способ сохранить работу и, надеюсь, заменить раздражающие рекламные заполнители солидной базой сторонников на Patreon!

    PayPal

    Это единственный способ сохранить работу и, надеюсь, заменить раздражающие рекламные заполнители солидной базой сторонников на Patreon!

    Пожертвовать сейчас

    Patreon

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

    И, наконец, будьте особенно активны в создании контента.

    Станьте покровителем

    Магазин и курсы

    Вы также можете зайти в магазин DeepBlue Shop, чтобы приобрести аппаратные проекты и электронные книги. Или записаться на любой из моих курсов.

    Магазин

    Курсы

    Купить Электроника

    Вы также можете купить запчасти для электроники, используя любые партнерские ссылки на моем сайте. Я получаю небольшой откат без каких-либо дополнительных затрат для вас. Это беспроигрышный вариант!

    Присоединяйтесь к нашим +25 000 подписчикам на рассылку новостей!

    Будьте в курсе всех новых выпусков контента. Вы также получаете случайные БЕСПЛАТНЫЕ коды купонов для курсов и других вещей!

    Введите адрес электронной почты…

    Программирование микроконтроллеров STM32: пошаговое руководство