- ST-LINK V2
- STM32CubeMX
- Необходимые материалы
- Принципиальная схема и подключения
- Создание и запись программы в STM32 с использованием Keil uVision и ST-Link
- Выход программируемой платы Keil STM32
- Программа
Микроконтроллеры STM32, использующие архитектуру ARM Cortex M, в настоящее время становятся популярными и используются во многих приложениях из-за своей функциональности, стоимости и производительности. Мы запрограммировали STM32F103C8 с помощью Arduino IDE в наших предыдущих руководствах. Программировать STM32 с помощью Arduino IDE просто, так как существует множество библиотек, доступных для различных датчиков для выполнения любой задачи, нам просто нужно добавить эти библиотеки в программу. Это простая процедура, и вы не сможете углубиться в изучение процессоров ARM. Итак, теперь мы переходим на следующий уровень программирования, называемый ARM-программированием. Таким образом мы можем не только улучшить нашу структуру кода, но и сэкономить место в памяти, не используя ненужные библиотеки.
STMicroelectronics представила инструмент под названием STM32Cube MX, который генерирует базовый код в соответствии с периферийными устройствами и выбранной платой STM32. Поэтому нам не нужно беспокоиться о кодировании основных драйверов и периферийных устройств. В дальнейшем этот сгенерированный код можно использовать в Keil uVision для редактирования в соответствии с требованиями. И, наконец, код записывается в STM32 с помощью программатора ST-Link от STMicroelectronics.
В этом руководстве мы узнаем, как программировать STM32F103C8 с помощью Keil uVision и STM32CubeMX, выполнив простой проект сопряжения кнопки и светодиода с платой STM32F103C8 Blue Pill. Мы сгенерируем код с помощью STM32Cube MX, затем отредактируем и загрузим код в STM32F103C8 с помощью Keil uVision. Прежде чем вдаваться в подробности, мы сначала узнаем о программаторе ST-LINK и программном инструменте STM32CubeMX.
ST-LINK V2
ST-LINK / V2 является отладчик и программатор в цепи для микроконтроллеров семейств STM8 и STM32. Мы можем загрузить код в STM32F103C8 и другие микроконтроллеры STM8 и STM32, используя этот ST-LINK. Модуль однопроводного интерфейса (SWIM) и интерфейсы JTAG / последовательной отладки проводов (SWD) используются для связи с любым микроконтроллером STM8 или STM32, расположенным на плате приложения. Поскольку приложения STM32 используют полноскоростной интерфейс USB для связи с интегрированными средами разработки Atollic, IAR, Keil или TASKING, мы можем использовать это оборудование для программирования микроконтроллеров STM 8 и STM32.
Выше представлен образ ключа ST-LINK V2 от STMicroelectronics, который поддерживает полный спектр отладочного интерфейса STM32 SWD, простой 4-проводной интерфейс (включая питание), быстрый и стабильный. Доступен в различных цветах. Корпус сделан из алюминиевого сплава. Он имеет синюю светодиодную индикацию, поскольку он используется для наблюдения за рабочим состоянием ST-LINK. Имена контактов четко обозначены на корпусе, как мы можем видеть на изображении выше. Он может взаимодействовать с программным обеспечением Keil, где программа может быть перенесена на микроконтроллеры STM32. Итак, давайте посмотрим в этом руководстве, как этот программатор ST-LINK можно использовать для программирования микроконтроллера STM32. На изображении ниже показаны контакты модуля ST-LINK V2.
Примечание: при первом подключении ST-Link к компьютеру. Нам необходимо установить драйвер устройства. По этой ссылке можно найти драйверы устройств для вашей операционной системы.
STM32CubeMX
Инструмент STM32CubeMX является частью STMicroelectronics STMCube. Этот программный инструмент упрощает разработку за счет сокращения усилий, времени и затрат на разработку. STM32Cube включает STM32CubeMX, который представляет собой графический инструмент настройки программного обеспечения, который позволяет генерировать код инициализации C с помощью графических мастеров. Этот код можно использовать в различных средах разработки, таких как keil uVision, GCC, IAR и т. Д. Вы можете скачать этот инструмент по следующей ссылке.
STM32CubeMX имеет следующие особенности
- Пин-аут-решатель конфликтов
- Помощник по установке дерева с часами
- Калькулятор энергопотребления
- Утилита, выполняющая настройку периферийных устройств MCU, таких как контакты GPIO, USART и т. Д.
- Утилита, выполняющая настройку периферийных устройств MCU для промежуточных стеков, таких как USB, TCP / IP и т. Д.
Необходимые материалы
Оборудование
- STM32F103C8 Голубая доска для таблеток
- ST-LINK V2
- Нажать кнопку
- СВЕТОДИОД
- Макетная плата
- Перемычки
Программного обеспечения
- Инструмент генерации кода STM32CubeMX (ссылка)
- Keil uVision 5 (ссылка)
- Драйверы для ST-Link V2 (ссылка)
Принципиальная схема и подключения
Ниже приведена принципиальная схема простого подключения светодиода к плате STM32 с помощью кнопки.
Соединение между ST-LINK V2 и STM32F103C8
Здесь плата STM32 Blue Pill питается от ST-LINK, который подключен к USB-порту компьютера. Таким образом, нам не нужно запитывать STM32 отдельно. В таблице ниже показано соединение между ST-Link и Blue pillboard.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 В |
Светодиод и кнопка
Светодиод используется для индикации выхода с платы Blue Pill при нажатии кнопки. Анод светодиода подключен к контакту PC13 платы Blue Pill, а катод заземлен.
Кнопка подключена для обеспечения ввода в штифтовой PA1 из Blue Pill борта. Мы также должны использовать подтягивающий резистор номиналом 10 кОм, потому что контакт может плавать без какого-либо входа, когда кнопка отпускается. Один конец кнопки подключен к земле, а другой конец - к контакту PA1, а подтягивающий резистор 10 кОм также подключен к 3,3 В на плате Blue Pill.
Создание и запись программы в STM32 с использованием Keil uVision и ST-Link
Шаг 1: - Сначала установите все драйверы устройств для ST-LINK V2, программные инструменты STM32Cube MX и Keil uVision и установите необходимые пакеты для STM32F103C8.
Шаг 2: - Второй шаг: Open >> STM32Cube MX
Шаг 3: - Затем нажмите « Новый проект».
Шаг 4: - После этого найдите и выберите наш микроконтроллер STM32F103C8
Шаг 5: - Теперь появляется эскиз распиновки STM32F103C8, здесь мы можем установить конфигурации выводов. Мы также можем выбрать наши контакты в разделе периферийных устройств в соответствии с нашим проектом.
Шаг 6: - Вы также можете напрямую щелкнуть контакт, и появится список, теперь выберите необходимую конфигурацию контактов.
Шаг 7: - Для нашего проекта мы выбрали PA1 как GPIO INPUT, PC13 как GPIO OUTPUT и отладку SYS как SERIAL WIRE, здесь мы подключаем только выводы ST-LINK SWCLK и SWDIO. Выбранные и сконфигурированные контакты отображаются ЗЕЛЕНЫМ цветом. Вы можете заметить это на изображении ниже.
Шаг 8: - Затем на вкладке Configuration выберите GPIO, чтобы установить конфигурации контактов GPIO для выбранных нами контактов.
Шаг 9: - Затем в этом окне конфигурации контактов мы можем настроить метку пользователя для контактов, которые мы используем, то есть определяемых пользователем имен контактов.
Шаг 10: - После этого нажмите Project >> Generate Code .
Шаг 11: - Теперь появляется диалоговое окно настроек проекта. В этом поле выберите имя и расположение проекта, а также среду разработки. Мы используем Keil, поэтому выберите MDK-ARMv5 в качестве IDE.
Шаг 12: - Следующий под Генератор кода вкладки, выберите Копировать только необходимые библиотечные файлы , а затем нажмите кнопку OK.
Шаг 13: - Теперь появляется диалоговое окно генерации кода. Выберите « Открыть проект», чтобы проект автоматически открывал созданный код в Keil uvsion.
Шаг 14: - Теперь открывается инструмент Keil uVision с нашим сгенерированным кодом в STM32CubeMx с тем же именем проекта, с необходимой библиотекой и кодами, которые настроены для выбранных нами контактов.
Шаг 15: - Теперь нам просто нужно включить логику для выполнения некоторых действий на выходном светодиоде (вывод PC13), когда кнопка нажата и отпущена на входе GPIO (контакт PA1). Итак, выберите нашу программу main.c, чтобы включить несколько кодов.
Шаг 16: - Теперь добавьте код в цикл while (1) , см. Изображение ниже, где я выделил этот раздел для непрерывного выполнения кода.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Кнопка DETECTS нажата {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Чтобы сделать вывод высоким при нажатии кнопки d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Для вывода низкого уровня при нажатии кнопки}}
Шаг 17: - После завершения редактирования кода щелкните значок Параметры для цели на вкладке отладки и выберите Отладчик ST-LINK.
Кроме того, нажмите кнопку « Настройки» , затем на вкладке « Загрузка Flash » установите флажок « Сбросить и запустить» и нажмите «ОК».
Шаг 18: - Теперь нажмите на значок «Восстановить», чтобы восстановить все целевые файлы.
Шаг 19: - Теперь вы можете подключить ST-LINK к компьютеру с готовыми соединениями схемы и щелкнуть значок ЗАГРУЗИТЬ или нажать F8, чтобы прошить STM32F103C8 кодом, который вы сгенерировали и отредактировали.
Шаг 20: - Вы можете заметить мигающую индикацию в нижней части окна keil uVision.
Выход программируемой платы Keil STM32
Теперь, когда мы нажимаем кнопку, светодиод включается, а когда мы отпускаем ее, светодиод гаснет.
Программа
Основная часть, которую мы добавили в созданную программу, показана ниже. Этот приведенный ниже код необходимо включить в while (1 ) программы main.c, созданной STM32CubeMX. Вы можете вернуться к шагам с 15 по 17, чтобы узнать, как его следует добавить в программу main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Кнопка DETECTS нажата {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Чтобы сделать вывод высоким при нажатии кнопки d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Для вывода низкого уровня при нажатии кнопки}}
Полный процесс создания и загрузки проекта на плату STM32 также объясняется в видео, приведенном в конце. Также ниже приведен полный код файла main.c, включая приведенный выше код.
Кроме того, здесь вы можете найти наш полный набор проектов STM32.