Начало работы с STM32 Nucleo64: руководство для начинающих


Наверняка многие из вас начинали свое знакомство с микроконтроллерной техникой с платы Arduino, которая проста в освоении и позволяет реализовать огромное число сравнительно несложных проектов. Но при создании сложных устройств вы неизбежно столкнетесь с ограничениями платы Arduino: небольшая вычислительная мощность, скромный объем памяти, сравнительно малое число свободных контактов.

Внешний вид проекта по началу работы с платой STM32 Nucleo64

Более "продвинутой" по сравнению с платой Arduino в этом плане является плата STM32F103C8 (Blue Pill), достаточно много проектов с которой мы рассмотрели на нашем сайте. Но в этой статье мы рассмотрим начало работы со сравнительно новым продуктом в семействе плат STM32 – платой разработки STM32 Nucleo64. Для понимания основ работы с платой STM32 Nucleo64 вы можете посмотреть обучающее видео по ней от авторов данной статьи (ссылка на источник приведена в конце статьи). Оно на английском языке, но достаточно понятное. В данном видео показана возможность программирования платы STM32 Nucleo64 с помощью платформы ARM Mbed, но в данной статье мы будем использовать вместо нее платформу от компании ST Microelectronics под названием TrueSTUDIO.

Также на нашем сайте вы можете посмотреть обзор отладочной платы STM32F Nucleo-64.

Примечание: существует достаточно много разновидностей платы STM32 Nucleo64, в данной статье мы будем использовать плату с обозначением NUCLEO-F030R8, отличающейся невысокой ценой. Но если даже у вас другая разновидность платы STM32 Nucleo64, то большинство моментов, описанных в данной статье, будет подходить и для нее.

Выбор платформы разработки для платы STM32 Nucleo64

Для работы с любым микроконтроллером (платой) необходима специализированная интегрированная среда разработки (Integrated Development Environment, IDE): для плат Arduino это Arduino IDE, для микроконтроллеров AVR – Atmel Studio, для микроконтроллеров PIC – MP Lab и т.д. Для работы с платой STM32 Nucleo64 необходима подходящая для нее IDE. Семейство плат STM32 основано на 32-битных микроконтроллерах и поддерживает следующие IDE и инструментальные средства:

  • IAR Embedded Workbench® for ARM® (EWARM);
  • MDK-ARM Keil;
  • TrueSTUDIO;
  • System Workbench for STM32.

В нашем проекте мы будем использовать платформу TrueSTUDIO для написания программы, ее компиляции и отладки поскольку она бесплатна для скачивания и может даже использоваться для коммерческих проектов без нарушения лицензии. Также мы будем использовать программу STM32CubeMX для облегчения работы с периферийными устройствами (ранее мы использовали данную программу для облегчения работы с платой STM32F103C8). Для загрузки программы (hex файла) в плату STM32 Nucleo64 можно использовать инструмент под названием STM32 ST-LINK, но в нашем проекте вместо него мы будем использовать TrueSTUDIO, которая имеет режим отладки (debug mode) и позволяет загружать hex файл непосредственно в платы STM32. Скачать TrueSTUIO и STM32CubeMX можно по следующим ссылкам:

Необходимые компоненты

  1. Отладочная плата STM32 Nucleo64 (купить на AliExpress).
  2. Резистор 1 кОм (купить на AliExpress).
  3. Светодиод (купить на AliExpress).
  4. Кнопка.
  5. Макетная плата.
  6. Соединительные провода.

Схема проекта

Схема для управления светодиодом с помощью платы STM32 Nucleo64 представлена на следующем рисунке.

Схема для управления светодиодом с помощью платы STM32 Nucleo64Как вы уже, наверное, знаете, плата STM32 Nucleo64 имеет два набора контактов – по одному на каждой стороне, которые называются контактами ST Morpho.

В нашем проекте нам необходимо подключить светодиод к контакту PA5 порта PORTA, а кнопку – к контакту PC13 порта PORTC. Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Также вместо внешних светодиода и кнопки можно использовать встроенные в плату светодиод и кнопку. Мы использовали внешние компоненты для большей наглядности.

Начало работы с платой STM32 Nucleo64 с помощью программы STM32CubeMX

Выполните следующую последовательность шагов.

Шаг 1. После установки запустите программу STM32CubeMX, в ней в селекторе плат выберите плату STM32.

Выбор в программе STM32CubeMX платы STM32

Шаг 2. После этого выполните поиск платы STM32 с названием NUCLEO-F030R8 и нажмите на появившуюся картинку платы. Если у вас другая разновидность платы STM32 Nucleo64, то выполните поиск по ее названию. Программа STM32CubeMX поддерживает все виды плат STM32 от компании ST Microelectronics.

Поиск в программе STM32CubeMX платы STM32 с названием NUCLEO-F030R8

Шаг 3. Затем нажмите на "yes" как показано на картинке ниже чтобы инициализировать все контакты платы в режим по умолчанию (default mode). В дальнейшем мы можем изменить их настройки по своему желанию.

Инициализация всех контактов платы STM32 в программе STM32CubeMX в режим по умолчанию

После нажатия на ‘Yes’ вы увидите экран как показано на рисунке ниже. Зеленый цвет контактов свидетельствует о том, что они установлены в режим по умолчанию.

Начало настройки контактов платы STM32 в программе STM32CubeMX

Шаг 4. Затем можно вручную сконфигурировать режим работы необходимых нам контактов. В нашем проекте мы будем включать светодиод с помощью кнопки, поэтому нам необходимо установить режим работы для контакта, к которому подключен светодиод, на вывод данных (output), а для контакта, к которому подключена кнопка – на ввод данных (input).

Для подключения светодиода в нашем проекте мы использовали контакт PA5, поэтому в программе STM32CubeMX мы установим для него режим GPIO_Output как показано на следующем рисунке.

Установка режима GPIO_Output для контакта PA5 в программе STM32CubeMX

Аналогичным образом мы установили для контакта PC13 режим GPIO_Input чтобы на нем можно было считывать состояние кнопки.

Установка режима GPIO_Input для контакта PC13 в программе STM32CubeMX

Также режимы работы контактов можно настроить на вкладке конфигурации (configuration tab) как показано на рисунке ниже.

Настройка режима контактов в программе STM32CubeMX на вкладке конфигурации

Шаг 5. На следующем шаге можно вручную настроить желаемую частоту работы микроконтроллера и контактов платы в зависимости от частоты внешнего или внутреннего генератора. По умолчанию используется внутренний кварцевый генератор на 8 MHz и при режиме PLL эта частота преобразуется в 48MHz. То есть по умолчанию контакты платы STM32 и ее микропроцессор работают на частоте 48MHz.

Настройка частоты работы микроконтроллера платы STM32

Шаг 6. Теперь перейдите в менеджер проектов (project manager), в котором введите имя для своего проекта, укажите его местоположение и выберите необходимые инструментальные средства (toolchain) или IDE. Мы в качестве IDE будем использовать TrueSTUDIO, поэтому выберем ее как показано на рисунке ниже.

Ввод настроек проекта в программе STM32CubeMX

Шаг 7. После этого нажмите на ссылку "Generate Code" (обведена красной линией на следующем рисунке).

Кнопка для генерации кода в программе STM32CubeMX

Шаг 8. После этого вы на экране увидите всплывающее окно, в нем нажмите на кнопку открытия проекта (open project). Но прежде чем выполнять данный шаг убедитесь в том, что вы установили TrueSTUDIO.

Кнопка для открытия проекта в программе STM32CubeMX

Программирование платы STM32 Nucleo64 с помощью TrueSTUDIO

После нажатия на кнопку открытия проекта в предыдущем пункте программа TrueSTUDIO запустится у вас автоматически. Если она запросит у вас местоположение проекта (workspace location) – укажите его, или используйте местоположение по умолчанию.

Указание местоположения проекта в программе TrueSTUDIO

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

Открытие исходных файлов проекта в программе TrueSTUDIO

После этого вы увидите код программы в TrueSTUDIO IDE. На левой стороне в папке ‘src’ вы увидите все файлы программы (с расширением .c), которые были сгенерированы для нас программой STM32Cube. В нашем проекте нам необходимо будет внести изменения только в файл main.c. Полный код данного файла с необходимыми изменениями приведен в конце нашей статьи.

Код файла main.c нашего проекта в программе TrueSTUDIO

Программа управления светодиодом для платы STM32 Nucleo64

Поскольку все необходимые файлы для нашего проекта были сгенерированы программой STM32CubeMX, нам необходимо просто задать для контакта светодиода режим работы на вывод данных, а для контакта кнопки – режим работы на ввод данных. Для этого необходимо отредактировать файл main.c.

Нам нужно дописать код для включения/выключения светодиода с помощью кнопки. Для этого нам необходимо дать осмысленные имена (инициализировать) контактам, к которым подключены кнопка и светодиод. Сначала сконфигурируем контакт 5 порта PORTA, к которому подключен светодиод.

Затем настроим контакт 13 порта PORTC.

Затем в функции main инициализируем все используемые контакты.

И затем будем считывать состояние кнопки и в зависимости от ее состояния включать или выключать светодиод.

Функция HAL_GPIO_ReadPin(SW_PORT, SW_PIN) имеет два аргумента: один из них название порта, а второй – контакт, к которому подключена кнопка. Режим работы данного контакта был сконфигурирован нами на вывод данных в программе STM32CubeMX.

Отладка и загрузка программы в STM32 Nucleo64 с помощью TrueSTUDIO

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

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

Вход в режим отладки в программе TrueSTUDIO

В режиме отладки (debug mode) код программы будет автоматически загружен в плату. После этого нам необходимо запустить код программы на выполнение нажав ‘Resume’ (обведена красным цветом на рисунке ниже) или F8.

Запуск программы на выполнение в режиме отладки в TrueSTUDIO

После этого можно протестировать управление светодиодом нажимая на кнопку. В соответствии с кодом программы светодиод должен изменять свое состояние с каждым нажатием кнопки. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Тестирование работы проекта

После тестирования мы можем прервать (terminate) работу программы нажав для этого иконку остановки программы, обведенную красным цветом на следующем рисунке.

Иконка остановки программы в TrueSTUDIO

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
4 643 просмотров

Комментарии

Начало работы с STM32 Nucleo64: руководство для начинающих — 4 комментария

  1. Вы сами то проверяли? Ничего не работает, причем ошибки каждый раз разные)

    • Не, сам не проверял потому что у меня такой платы в наличии нет. Только перевел данную статью. Ну у автора статьи на видео показано же что все работает. Может он просто при описании своего проекта опечатку какую-нибудь допустил. Но я не сомневаюсь в том что у него это получилось. Сайт хороший, и с него я перевел уже очень много статей для своего сайта. И очень редко поступают жалобы на то, что в них что то не работает. В основном это касается только уже старых статей, где использованы старые версии необходимых библиотек, которые в текущий момент уже неактуальны

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *