- Выбор и загрузка необходимых платформ разработки для плат Nucleo64
- Принципиальная схема и настройка оборудования
- Начало работы с STM32CubeMX для плат разработки STM32 Nucleo64
- Программирование платы разработки STM32 Nucleo64 с использованием TrueSTUDIO
- Программа STM32 Nucleo64 для управления светодиодом с помощью кнопки
- Отладка и загрузка кода в плату разработки STM32 Necleo64 с использованием TrueSTUDIO
Многие из нас должны быть знакомы с популярными микроконтроллерами и платами для разработки, такими как Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 и т. Д. Фактически, для большинства людей Arduino была бы их первой платой для разработки, но когда мы копаем глубже и начинаем профессиональные разработки, мы скоро осознаем ограничения Arduino (такие как стоимость, универсальность, стабильность, скорость и т. д.) и поймем необходимость перехода на более родную платформу микроконтроллеров, такую как PIC, STM, Renesas и т. д.
Мы уже рассмотрели серию руководств по микроконтроллерам PIC, которые помогут новичкам изучить микроконтроллеры PIC. Точно так же, начиная с этой статьи, мы также спланируем серию руководств STM32 Nucleo64 Development Board, которые могут помочь абсолютным новичкам учиться и развиваться с использованием платформы STM32. Платы разработки Nucleo64 - это недорогая и простая в использовании платформа как для профессиональных разработчиков, так и для любителей. Если вы совершенно не знакомы с платами разработки STM32 Nucleo64, ознакомьтесь с этим видеороликом Nucleo64 Review, чтобы понять основы этой платы, прежде чем продолжить. В видео также показано, как программировать STM32 с помощью платформы ARM Mbed. но для этого урока мы будем использовать другую бесплатную платформу от ST Microelectronics под названием TrueSTUDIO.
Примечание. Существует много версий плат разработки STM32 Nucleo64, в данном руководстве используется плата NUCLEO-F030R8. Мы выбрали эту плату в основном из-за ее невысокой стоимости. Даже если у вас другая версия, для начала вам будет достаточно большинства вещей, обсуждаемых в руководстве.
Выбор и загрузка необходимых платформ разработки для плат Nucleo64
Для начала работы с любым микроконтроллером потребуется среда программирования, например, у нас есть Arduino IDE для плат Arduino, Atmel Studio для микроконтроллера AVR, MP Lab для PIC и т. Д. Итак, здесь нам также понадобится IDE для наших плат STM32 Nucleo64 для выполнения программирования и отладки. Семейство STM32 состоит из 32-битных микроконтроллеров, которые поддерживают следующие IDE и инструментальные средства:
- IAR Embedded Workbench® для ARM® (EWARM).
- MDK-ARM Кейл
- TrueSTUDIO
- Системная рабочая среда для STM32
Здесь для наших руководств TrueSTUDIO будет использоваться для написания, компиляции и отладки кода, поскольку его можно бесплатно загрузить и использовать даже для коммерческих проектов без каких-либо лицензионных требований. Затем STM32CubeMX будет использоваться для генерации периферийных драйверов для плат STM32, чтобы упростить программирование. Чтобы загрузить нашу программу (шестнадцатеричный файл) на нашу доску разработки, люди обычно используют инструмент STM32 ST-LINK Utility, но вместо этого мы будем использовать для этого сам TrueSTUDIO. TrueSTUDIO имеет режим отладки, который позволяет программистам загружать шестнадцатеричный файл прямо на плату STM32. И TrueSTUIO, и STM32CubeMX легко загрузить, просто перейдите по ссылке ниже, зарегистрируйтесь и загрузите установку. Затем установите их на свой ноутбук.
- Скачать STM32Cube MX
- Скачать TrueSTUDIO
Принципиальная схема и настройка оборудования
Прежде чем мы перейдем к разделу программного обеспечения и кодированию, давайте подготовим нашу плату для этого проекта. Как упоминалось ранее в этой статье, мы собираемся управлять светодиодом с помощью кнопки. Теперь, если вы видели видео по ссылке выше, вы уже должны знать, что ваша плата разработки STM32 имеет два набора контактов разъема с каждой стороны, называемых контактами ST Morpho. Мы подключили к этим контактам кнопку и светодиод, как показано на схеме ниже.
Соединения цепей для этого проекта просты, нам нужно подключить светодиод на PA5 порта PORTA и переключатель на PC13 порта PORTC относительно GND. После того, как подключения были установлены, моя тестовая установка выглядела следующим образом.
В качестве альтернативы мы также можем использовать встроенный светодиод и кнопку на плате. Эти встроенные светодиоды и кнопка также подключены к одному выводу, как показано на принципиальной схеме. Мы добавили внешние компоненты только для практики. Приведенная ниже схема выводов платы разработки STM32 пригодится, чтобы узнать, где каждый вывод morpho подключен к бортовой плате.
Начало работы с STM32CubeMX для плат разработки STM32 Nucleo64
Шаг 1. После установки запустите STM32CubeMX, затем выберите переключатель платы доступа, чтобы выбрать плату STM32.
Шаг 2: Теперь найдите плату по имени вашей платы STM32, например NUCLEO-F030R8, и нажмите на плату, показанную на картинке. Если у вас другая доска, найдите ее соответствующее имя. Программное обеспечение будет поддерживать все платы разработки STM32 от ST Microelectronics.
Шаг 3: Теперь нажмите «Да», как показано на рисунке ниже, чтобы инициализировать все периферийные устройства в их режиме по умолчанию. Позже мы можем изменить необходимые для нашего проекта.
После нажатия «Да» экран станет похожим на изображение ниже и булавкой зеленого цвета, указывающей, что они запускаются по умолчанию.
Шаг 4: Теперь пользователи могут выбрать желаемый параметр из категорий. В этом уроке мы собираемся переключать светодиод с помощью кнопки. Итак, нам нужно сделать вывод светодиода как выход, а контакт переключателя как INPUT.
Вы можете выбрать любой контакт, но я выбираю PA5 и меняю его состояние на GPIO_Output, чтобы он работал как выходной контакт, как показано на рисунке ниже.
Точно так же я выбираю PC13 как GPIO_Input, чтобы я мог прочитать состояние моей кнопки.
В качестве альтернативы, мы можем также настроить контакты из вкладки распиновки и конфигурации, как показано ниже.
Шаг 5: На следующем шаге пользователь может установить желаемую частоту для микроконтроллера и контактов в соответствии с внешним и внутренним генератором. По умолчанию выбран внутренний кварцевый генератор на 8 МГц, и с помощью ФАПЧ эти 8 преобразуются в 48 МГц. Это означает, что по умолчанию плата STM32 или микроконтроллер и контакты будут работать на частоте 48 МГц.
Шаг 6: Теперь перейдите в диспетчер проекта и дайте имя своему проекту, местоположение проекта и выберите набор инструментов или IDE. Здесь мы используем TrueSTUDIO, поэтому я выбрал то же, что показано ниже.
Шаг 7: Теперь нажмите на значок «Создать код» рядом с красным кружком на картинке ниже.
Шаг 8: Теперь вы увидите всплывающее окно, как указано, затем нажмите «Открыть проект». Но убедитесь, что вы установили TrueSTUDIO перед этим шагом.
Программирование платы разработки STM32 Nucleo64 с использованием TrueSTUDIO
Теперь ваш код или проект откроется в TrueSTUDIO автоматически, если TrueSTUDIO запросит местоположение рабочей области, а затем укажите местоположение рабочей области или перейдите к местоположению по умолчанию.
Пользователь увидит экран, показанный ниже, и затем ему нужно будет щелкнуть угловую отметку красного цвета.
И теперь мы можем видеть код в нашей TreuSTUDIO IDE. Слева под папкой src мы видим другие программные файлы (с расширением.c), которые уже были созданы для нас из STM32Cube. Нам просто нужно запрограммировать файл main.c. Даже в файле main.c у нас уже будет несколько вещей, настроенных для нас с помощью CubeMX, нам нужно только отредактировать его, чтобы он соответствовал нашей программе. Полный код внутри файла main.c приведен внизу этой страницы.
Программа STM32 Nucleo64 для управления светодиодом с помощью кнопки
Поскольку весь требуемый драйвер и код генерируются STM32CubeMX, нам нужно только настроить вывод светодиода как выход, а кнопку как вход. Программа для управления светодиодами с помощью кнопки должна быть написана в файле main.c. Полную программу можно найти внизу этой страницы. Объяснение этому следующее
Мы только написали код для переключения светодиода с помощью кнопки. Чтобы добиться этого, мы сначала определяем контакты для светодиодов и кнопок. Здесь мы определили светодиод на выводе 5 номер PORTA.
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
И определите переключатель на контакте № 13 порта PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Затем в основной функции мы инициализировали все используемые периферийные устройства.
/ * Инициализировать все настроенные периферийные устройства * / MX_GPIO_Init (); MX_USART2_Init ();
Затем прочитайте кнопку, используя оператор if, и если обнаружите кнопку, нажмите (LOW), тогда светодиод переключит свое состояние.
Пока (1) {/ * КОД ПОЛЬЗОВАТЕЛЯ КОНЕЦ ПОКА * / Если (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * КОД ПОЛЬЗОВАТЕЛЯ НАЧАЛО 3 * /}
Здесь функция HAL_GPIO_ReadPin (SW_PORT, SW_PIN) имеет два аргумента: один - PORT, а другой - вывод, к которому подключен коммутатор, и этот вывод настроен как INPUT при настройке периферийного устройства в STM32CubeMX.
Отладка и загрузка кода в плату разработки STM32 Necleo64 с использованием TrueSTUDIO
Теперь подключите вашу доску к компьютеру с помощью кабеля программатора. После подключения драйвер, необходимый для платы, должен быть загружен автоматически, вы можете проверить это с помощью диспетчера устройств.
Затем нажмите значок отладки, отмеченный красным кружком на приведенном ниже рисунке, чтобы скомпилировать программу и войти в режим отладки.
В режиме отладки код будет загружен автоматически. Теперь нам нужно запустить код, нажав «Возобновить» или F8 (отмечено красной схемой на рисунке ниже).
Теперь мы можем проверить управление светодиодом, нажав кнопку. Согласно коду, светодиод должен менять свое состояние каждый раз, когда вы нажимаете кнопку. Полную работу также можно найти в видео, ссылка на которое находится внизу этой страницы.
После тестирования мы также можем завершить программу, нажав значок завершения, отмеченный красным кружком на рисунке ниже.