Программирование stm32f103c8t6 через st link v2

Программирование STM32 Blue Pill с помощью Keil uVision и STM32CubeMX

Микроконтроллеры STM32 построены на основе архитектуры ARM Cortex M. В настоящее время они становятся все более популярными благодаря их высокой производительности и относительно невысокой стоимости. Ранее мы рассматривали программирование платы STM32F103C8, также известной под названием STM32 Blue Pill («синяя таблетка») с помощью Arduino IDE как с использованием внешнего FTDI программатора, так и через USB разъем.

Программирование платы STM32 с помощью Arduino IDE достаточно простое и открывает возможность использования множества библиотек, разработанных для платформы Arduino. В этом случае вам нет необходимости глубоко погружаться в изучение архитектуры ARM. Но в этой статье мы попробуем подняться на более высокий уровень в программировании плат STM32, который позволит нам не только улучшить структуру нашего программного кода, но также сэкономить объем памяти за счет неиспользования не нужных нам библиотек.

Внешний вид проекта программирования платы STM32 Blue Pill с помощью Keil uVision и STM32CubeMX

Для этого компания STMicroelectronics разработала инструмент под названием STM32Cube MX, который автоматически формирует базовый код для нашей программы исходя из используемой платы STM32 и подключенных к ней периферийных устройств. Таким образом, у нас отпадает необходимость написания кода для основных драйверов и периферийных устройств. В дальнейшем этот автоматически сгенерированный код можно отредактировать в программной среде Keil uVision. Законченную версию программы можно загрузить в плату STM32 с помощью программатора ST-Link, разработанного компанией STMicroelectronics.

Читайте также:  R tech sl1000 пульт программирование

В данной статье мы рассмотрим программирование платы STM32F103C8 (Blue Pill) с помощью Keil uVision и STM32CubeMX. В качестве периферийных устройств, подключенных к плате, будут использоваться кнопка и светодиод. Сначала мы автоматически сгенерируем код программы с помощью инструмента STM32Cube MX, а затем отредактируем его в программе Keil uVision.

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

Аппаратное обеспечение

  1. Плата разработки STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
  2. Программатор ST-LINK V2 (купить на AliExpress).
  3. Кнопка.
  4. Светодиод (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Программное обеспечение

ST-LINK V2 представляет собой программатор со встроенным дебаггером для микроконтроллеров STM8 и STM32. С его помощью можно также загружать программный код для нашей платы отладки STM32F103C8. Для взаимодействия с микроконтроллерами STM8 и STM32 программатор ST-LINK V2 содержит интерфейсы SWIM (single wire interface module) и JTAG/ SWD (serial wire debugging). Программатор работает через USB интерфейс и может работать с такими интегрированными средами разработки как Atollic, IAR, Keil или TASKING

Внешний вид программатора ST-LINK V2 показан на следующем рисунке.

Внешний вид программатора ST-LINK V2

Показанный на рисунке программатор ST-LINK V2 поддерживает полный диапазон интерфейсов отладки SWD, который представляет собой простой 4-х проводный интерфейс и отличается хорошей стабильностью работы. Программатор ST-LINK V2 доступен во множестве цветовых решений и изготавливается из алюминиевого сплава. Для индикации режимов работы программатор содержит в своем составе светодиод синего цвета. Названия контактов подписаны на корпусе программатора.

Программатор ST-LINK V2 может подключаться к программному обеспечению Keil и с его помощью загружать код программы в микроконтроллеры STM32. Распиновка программатора ST-LINK V2 показана на следующем рисунке.

Распиновка программатора ST-LINK V2

Примечание : во время первого подключения программатора ST-LINK V2 к компьютеру необходимо установить драйверы для работы с ним, которые можно скачать по следующей ссылке. Выбирайте драйвер, подходящий для вашей операционной системы.

STM32CubeMX

Инструмент STM32CubeMX представляет собой часть экосистемы STMCube, разработанной компанией STMicroelectronics. Данный инструмент позволяет значительно облегчить разработку программного кода для микроконтроллеров STM32. STM32CubeMX включает графическую оболочку и позволяет производить формирование программного кода на языке C с помощью графических инструментов. Далее этот программный код может быть использован в различных программах: keil uVision, GCC, IAR и т.д. Скачать STM32CubeMX можно по следующей ссылке.

Особенности STM32CubeMX:

  • эффективное решающее устройство;
  • помощник синхронизации;
  • калькулятор потребляемой мощности;
  • утилиты, осуществляющие конфигурацию периферийных устройств микроконтроллера, таких как контакты GPIO, USART и т.д.
  • утилиты, осуществляющие программную конфигурацию стека протоколов TCP/IP, USB и т.д.

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

Схема подключения светодиода, кнопки и программатора ST-LINK V2 к плате STM32F103C8 (Blue Pill) представлена на следующем рисунке.

Схема подключения светодиода, кнопки и программатора ST-LINK V2 к плате STM32F103C8 (Blue Pill)

Плата STM32 Blue Pill в нашем проекте получает питание от программатора ST-LINK, который, в свою очередь, подключен к USB порту компьютера. Поэтому нам не нужно отдельно подавать питание на плату STM32 Blue Pill. Схема соединений между платой STM32F103C8 и программатором ST-LINK V2 приведена в следующей таблице.

Плата STM32F103C8 ST-LINK V2
GND GND
SWCLK SWCLK
SWDIO SWDIO
3V3 3.3V

Светодиод в нашей схеме используется для индикации нажатия кнопки. Анод светодиода подключен к контакту PC13 платы STM32 Blue Pill, а катод подключен к общему проводу (земле).

Кнопка подключена к контакту PA1 платы STM32 Blue Pill с помощью подтягивающего резистора 10 кОм.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

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

Создание и загрузка программы в плату STM32 с помощью Keil uVision и ST-Link

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

Шаг 1. Первым делом установите все необходимые драйверы для программатора ST-LINK V2, программы STM32CubeMX и Keil uVision, а также необходимые пакеты для платы STM32F103C8.

Шаг 2. Запустите STM32CubeMX.

Шаг 3. В нем нажмите на New Project (новый проект).

Создание нового проекта STM32Cube MX

Шаг 4. После этого выполните поиск и выберите микроконтроллер STM32F103C8.

Выбор микроконтроллера STM32F103C8 в STM32Cube MX

Шаг 5. На экране появится распиновка платы STM32F103C8, на которой вы можете задать необходимую конфигурацию (режимы работы) контактов. Также вы можете выбрать контакты для подключения периферийных устройств.

Распиновка платы STM32F103C8 в программе STM32CubeMX

Шаг 6. Также вы можете нажать на один из контактов в представленной распиновке, после чего появится список контактов, в котором вы можете задать их конфигурацию.

Выбор режима работы контакта в программе STM32CubeMX

Шаг 7. Для нашего проекта мы выбрали для контакта PA1 режим работы GPIO INPUT (на ввод данных), для контакта PC13 – GPIO OUTPUT, для отладки (debug) SYS – SERIAL WIRE (к этим контактам мы будем подключать контакты ST-LINK SWCLK & SWDIO. Выбранные и сконфигурированные (selected & configured) контакты окрашиваются в зеленый цвет как показано на следующем рисунке.

Выбранные в программе STM32CubeMX режимы контактов для нашего проекта

Шаг 8. Далее под вкладкой конфигурации (Configuration tab) выберите GPIO чтобы установить конфигурацию (режимы работы) для контактов, которые мы выбрали на предыдущем шаге.

Отображение режима работы контактов в программе STM32CubeMX

Шаг 9. Затем в окне настройки конфигурации контактов (pin configuration box) мы можем настроить пользовательские метки для используемых нами контактов, то есть дать этим контактам осмысленные имена.

Настройка пользовательских меток для контактов в программе STM32CubeMX

Шаг 10. После этого выберите пункт меню Project >> Generate Code.

Запуск в программе STM32CubeMX режима генерации кода

Шаг 11. Появится диалоговое окно с настройками проекта. В этом окне вам необходимо ввести имя проекта и его местоположение, а также используемый инструментарий. Мы используем программу Keil, поэтому в качестве интегрированной среды разработки (IDE) выберите MDK-ARMv5.

Изменение настроек проекта в программе STM32CubeMX

Шаг 12. Далее под вкладкой генерации кода (Code Generator tab) выберите пункт «Copy only the necessary library files» и затем нажмите OK.

Выбор режима копирования файлов библиотек в программе STM32CubeMX

Шаг 13. Появится диалоговое окно генерации кода. Выберите Open Project чтобы автоматически открыть генерацию кода в Keil uvsion.

Открытие генерации кода в Keil uvsion

Шаг 14. Откроется инструмент Keil uVision с нашим автоматически сгенерированным кодом в STM32CubeMx и нашим введенным именем проекта с необходимыми подключенными библиотеками и кодами для контактов, работу которых мы настроили ранее.

Запуск Keil uVision с нашим автоматически сгенерированным кодом в STM32CubeMx

Шаг 15. Теперь нам необходимо настроить логику работы программы. Например, включать светодиод (контакт PC13) при нажатии кнопки (контакт PA1) и выключать светодиод при отпускании кнопки. Поэтому выберите файл main.c чтобы включить в него необходимые фрагменты кода.

Выбор редактируемого файла в Keil uVision

Шаг 16. Добавьте следующий фрагмент кода в цикл while(1).

Источник

Прошивка платы STM32F103C8T6 с помощью usb/ttl и st-link v2. Подготовка программы arduino IDE для работы с платой.

Итак. Не будем здесь описывать для чего нужна данная плата. Думаю те кто ей заинтересовался знают о ее возможностях.

Но распиновку устройства все-же покажу для наглядности:

Я лишь покажу здесь как подключить usb/ttl или st-link для прошивки устройства. И как подготовить программу arduino ide для прошивки stm32.

Чтоб начать работу данной платы с arduino ide. Нам необходимо подключить usb/ttl конвертер к плате следующим образом:

ВАЖНО! Микроконтроллер stm32 имеет 3.3 вольтовую логику. Следовательно и usb/ttl должен быть таковым. Я же прошивал на видео обычным, который имеет 5 вольтовую логику. Но это не правильно. Всегда есть риск спалить устройство.

Также нужно поставить джампер как показано на картинке.

Итак, после того как подключили конвертер к плате и поставили перемычку правильно. Нам нужно скачать несколько приложений:

  1. Программа STM32 Flash loader demonstrator. Она нужна для первой прошивки микроконтроллера, чтоб он смог в дальнейшем прошиваться через arduino ide. Скачать программу можно с официального сайта перейдя по ссылке: https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html#
  2. STM32duino-bootloader. Тут находится прошивка необходимая для первой прошивки устройства. Качаем сразу целиком архив со страницы проекта на github: https://github.com/rogerclarkmelbourne/STM32duino-bootloader
  3. Arduino_STM32. Это платы stm32 которые необходимо добавить в arduino ide для того чтоб выбрать нужную плату во время заливки скетча. Скачиваем архив со страницы github: https://github.com/rogerclarkmelbourne/Arduino_STM32. Кладем содержимое архива по пути: Документы/arduino/hardware/

После того как все скачали, разархивируем архивы. Устанавливаем программу STM32 Flash loader demonstrator. Она не устанавливается на рабочий стол. Ее можно найти по слову deminstrator gui. После того как установили приложение. Откроем его.

И откроется первое окно, в котором выбираем COM порт которым определился usb/ttl конвертер. И нажимаем кнопку далее.

В этом окне если у Вас в первом блоке есть красные надписи, то нажимаем кнопку “Remove protection” и нажимаем Next. Ну и если у Вас все также как у меня на скрине, то ничего не делаем а сразу нажимаем “Next”.

Тут выбираем какая у нас плата. Возможно выбрать из двух вариантов. на 64К и на 128К. В моем случае это на 64К. Как определить? Если у Вас микроконтроллер STM32F103C8 то это 64К. А если STM32F103CB то это 128К.

После того как выбрали контроллер, нажимаем “Next”

В этом окне выбираем “Download from file” и переходим в распакованный архив STM32duino-bootloader. Там в папку binaries и выбираем файл gd32f1_pc13.bin .

Ну и тоже нажимаем далее. После этого начнется загрузка .bin файла.

После загрузки закрываем программу.

Если Вы ахив Arduino_stm32 положили корректно по пути Документы/arduino/hardware/ То при открытии программы Arduino ide в Инструменты в выборе платы должна появиться возможность выбора платы:

И для того чтоб плату заливался скетч необходимо выбрать “Generic STM32F103C series

Теперь что касается прошивки. У меня работает 2 метода. Первый это прошивка через usb/ttl. Для этого нужно выбрать в “Upload method” нужно выбрать ” serial:

И все у Вас замечательно загрузится в микроконтроллер.

Но платы STM32F103C8T6 часто предлагают на aliexpress сразу с программатором st-link v2. С ним скетч в плату загружается гораздо быстрее. У него сразу 3.3 вольтовая логика, какраз которую хочет наш контроллер. По этому правильнее будет грузить программы в контроллер через st-link. Для этого подключим его к плате следующим образом:

После подключения, в “Upload method” нужно выбрать “STLink” и все. Теперь будет загружаться все через данынй свисток.

На этом все. Спасибо за внимание. Надеюсь статья помогла Вам.

Источник

Оцените статью