Arduino pro ide stm32

Arduino pro ide stm32

В этом руководстве (перевод [1]) рассматривается, как программировать платку на микроконтроллере STM32F103C8T6, так называемую «Blue Pill» [2] (часто эту плату называют Arduino STM32) с помощью Arduino IDE. Платки Blue Pill в изобилии продаются на AliExpress и Taobao, для поиска вбейте STM32 stm32f103c8t6.

Примечание: если Вы любите паять, то можно также самому заказать печатную плату Blue Pill онлайн-среде EasyEDA благодаря проекту [3]. Это модифицированный в сторону упрощения проект — заменен регулятор LDO на более удобный. Также изменены номинал резистора подтяжки USB и светодиоды индикации. Десяток плат обойдутся примерно $5, плюс доставка порядка $6.

[Что понадобится]

Платка STM32 «Blue Pill» или аналогичная:

Отладчик ST-LINK/V2 для микроконтроллеров семейств STM8 и STM32:

Примечание: этот отладчик можно купить на AliExpress и Taobao по цене порядка $2. Подойдет и более старый отладчик ST-LINK или ST-LINK/v1, однако будьте внимательны к подключению отладчика через выводы SWDCLK, SWDIO, GND и +3.3V, цоколевки у разъема отладки могут различаться (см. врезку ниже).

На цоколевках синим цветом выделены 4 провода, которыми адаптер подключается к микроконтроллеру STM32.

[STLink/STLink-V1]

Вид на штырьки разъема снаружи:

+—-+
T_JRST |1 2| 3V3
5V |3 4| T_JTCK/ T_SWCLK
SWIM |5 6| T_JTMS/ T_SWDIO
GND |7 8| T_JTDO
SWIM RST |9 10| T_JTDI
+—-+

[STLink-V2]

Вид на штырьки разъема снаружи:

+—-+
RST |1 2| SWCLK
SWIM |3 4| SWDIO
GND |5 6| GND
3.3V |7 8| 3.3V
5V |9 10| 5V
+—-+

Еще один возможный вариант цоколевки:

+—-+
RST |1 2| SWDIO
GND |3 4| GND
SWIM |5 6| SWCLK
3.3V |7 8| 3.3V
5V |9 10| 5V
+—-+

[Конфигурирование Arduino IDE]

Автор оригинальной статьи [1] использовал Arduino 1.8.1. Я экспериментировал в среде Arduino версии 1.8.13, и все описанное относится к ней. Так что вероятно, что в другой более-менее новой версии Arduino все также будет работать. Процесс по шагам:

1. Зайдите в меню Файл -> Настройки (File -> Preferences) и кликните на кнопку справа от поля ввода «Дополнительные ссылки для Менеджера плат:» (Additional Boards Manager URLs).

2. В окно ввода URL вставьте ссылку

Закройте окна настроек кликами на OK.

3. Зайдите в меню Инструменты -> плата -> Менеджер плат. (Tools -> Board -> Board Manager). Для ускорения поиска нужного дополнения в выпадающем списке Тип (Type) выберите Внесены (Contributed). Прокрутите до STM32 Cores by STMicroelectronics и нажмите на кнопку Установка (Install).

Установка пакета поддержки STM32 займет несколько минут. Загрузятся утилиты компилирования и отладки ARM (ARM debugging/compiling toolchain).

4. Необходимо добавить поддержку ST-Link. Загрузите Arduino_STM32-master.zip по ссылке [4]. Создайте папку Arduino_STM32 в каталоге arduino-1.8.13\hardware\ (здесь arduino-1.8.13 это корневой каталог установки Arduino IDE, где находится исполняемый файл arduino.exe). Распакуйте содержимое архива Arduino_STM32-master.zip в папку arduino-1.8.13\hardware\Arduino_STM32.

Перезапустите Arduino IDE.

5. Теперь надо сделать выбор используемой платы и программатора. Зайдите в меню Инструменты (Tools) -> Плата: (Board) -> STM32F1 Boards (Arduino_STM32) -> Generic STM32F103C series. Выбор может быть сделан на основе используемого на плате микроконтроллера.

Плата: (Board) -> STM32 Boards (selected from submenu) -> Generic STM32F1 Series. После этого меню Инструменты изменится, в нем появятся новые пункты. Выберите пункт Board part number: «Blue Pill F103C6 (32K)». Выбор может быть сделан на основе используемого на плате микроконтроллера. Поэтому, если на плате стоит STM32F103C8T6, то выберите Black Pill F103C8 или Generic F103C8. —>Пример возможного выбора:

Плата: «Generic STM32F103C series»
Variant: «STM32F103C8 (20k RAM. 64k Flash)»
Upload method: «STLink»
CPU Speed(MHz): «72 MHz (Normal)»
Optimize: «Smallest (default)»

[Загрузка скетча]

Чтобы убедиться, что все работает, запишем в память STM32103 простейшую программу мигания светодиодом — традиционный «Hello World» в мире микроконтроллеров. Для этого зайдите в меню Файл -> Примеры -> 01.Basics -> Blink (File -> Examples -> 01.Basics -> Blink).

Загрузится скетч Blink.

Соедините STLink с платой Blue Pill четырьмя проводами (см. выше врезку «Цоколевки разъема SWD адаптеров ST-Link»):

Blue Pill STLink
3V3 3.3V
SWO SWDIO
SWCLK SWCLK
GND GND

Перемычки BOOT0 и BOOT1 установите в положение 00, что соответствует запуску кода из памяти Flash.

BOOT1 BOOT0 Откуда запустится программа
0 0 Внутренняя память программ FLASH
1 0
0 1 Системная память (встроенный в ROM загрузчик [6])
1 1 Внутренняя память RAM

Нажмите на круглую кнопку со стрелкой вправо (эквивалентно выбору в меню Скетч -> Загрузка Ctrl+U). Программа скомпилируется и загрузится, светодиод PC13 начнет медленно мигать.

[Что дальше?]

Микроконтроллер серии STM32F1 (Arm® Cortex™-M) обладает широким набором аппаратных интерфейсов и возможностей использования.

Поэкспериментируйте с другими примерами кода и проектами из меню Файл -> Примеры. Будьте осторожны с использованием выводов USB- и USB+ (ножки портов PA11 и PA12) — они соединены с выводами коннектора microUSB. Также имейте в виду, что к выводам OSC32IN и OSC32OUT (ножки портов PC14 и PC15) подключен часовой кварцевый резонатор на 32.768 кГц.

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как запрограммировать STM32 с помощью Arduino IDE

С момента своего появления Arduino IDE демонстрирует желание поддерживать все виды платформ, от клонов Arduino и вариаций разных производителей до плат сторонних производителей, таких как ESP32 и ESP8266. По мере того, как все больше людей знакомятся с Arduino IDE, среда начинает поддерживать больше плат, которые не основаны на чипах ATMEL, и в сегодняшнем уроке мы рассмотрим одну из таких плат. Мы рассмотрим, как программировать плату на основе STM32, а именно STM32F103C8T6, с помощью Arduino IDE.

Плата STM32, которая будет использоваться в этом учебном материале, является не чем иным, как платой разработки на основе микросхемы STM32F103C8T6 на базе микроконтроллера STM32F1, обычно называемой «Blue Pill» в соответствии с синим цветом печатной платы. Blue Pill работает на мощном 32-битном процессоре ARM STM32F103C8T6 с тактовой частотой 72 МГц. Плата работает с логическими уровнями 3,3 В, но ее контакты GPIO были протестированы на устойчивость к 5 В. Хотя она не поставляется с WiFi или Bluetooth, как варианты ESP32 и Arduino, все же она предлагает 20 КБ ОЗУ и 64 КБ флэш-памяти, что делает данное решение достаточным для крупных проектов. Она также имеет 37 выводов GPIO, 10 из которых можно использовать для аналоговых датчиков, поскольку они имеют АЦП, а также другие для SPI, I2C, CAN, UART и DMA. Для платы, которая стоит около 3 долларов это впечатляющие характеристики.

Частота, с которой работает Blue pill, примерно в 4,5 раза выше, чем у Arduino UNO. В качестве примера того, как использовать плату STM32F1, мы подключим ее к TFT-дисплею 1,44 дюймов и запрограммируем ее рассчитать константу «Пи». Мы отметим, сколько времени понадобилось микроконтроллеру, чтобы получить значение, и сравнить его со временем, которое требуется Arduino Uno для выполнения той же задачи.

Схема подключения для этого примера следующая:

Как и в случае с большинством плат, выпущенных не Arduino, необходимо выполнить небольшую настройку, прежде чем плату можно будет использовать с Arduino IDE. Это включает в себя установку файла платы либо через менеджер плат Arduino, либо загрузку из Интернета и копирование файлов в папку оборудования. Маршрут к Board Manager является менее утомительным, и поскольку STM32F1 входит в число перечисленных плат, мы пойдем по этому пути. Начнем с добавления ссылки для платы STM32 в списки предпочтений Arduino. Перейдите в Файл — Настройки, (File — Preferences) затем введите этот URL (http://dan.drown.org/stm32duino/package_STM32duino_index.json) в поле, как указано ниже, и нажмите кнопку ОК.

Теперь зайдите в Инструменты — Плата — Менеджер плат (Tools — Board — Board manager), откроется диалоговое окно с панелью поиска. Найдите STM32F1 и установите соответствующий пакет.

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

Код будет написан так же, как мы писали бы любой другой скетч для проекта Arduino, с той лишь разницей, что здесь немного иначе ссылаются на контакты. Чтобы иметь возможность легко разработать код для этого проекта, мы будем использовать две библиотеки, которые представляют собой модификации стандартных библиотек Arduino, чтобы сделать их совместимыми с STM32. Мы будем использовать модифицированную версию библиотек Adafruit GFX (https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_GFX_AS) и Adafruit ST7735 (https://github.com/KenjutsuGH/Adafruit-ST7735-Library).

Код для STM32, написанный в Arduino IDE, выглядит следующим образом:

Загрузка скетча в STM32f1 выполняется немного сложнее по сравнению со стандартными платами, совместимыми с Arduino. Чтобы загрузить код на плату, нам нужен конвертер данных USB в данные последовательного интерфейса на основе FTDI. Подключите конвертер USB к последовательному порту STM32, как показано на схеме далее.

Затем мы затем изменим положение перемычки состояния платы в положение 1 (как показано на рисунке ниже), чтобы перевести плату в режим программирования. Нажмите кнопку сброса на плате один раз после этого, и мы будем готовы загрузить код.

На компьютере убедитесь, что вы выбрали «Generic STM32F103C board» и выбрали последовательный порт для метода загрузки, после чего вы можете нажать кнопку загрузки. После завершения загрузки установите перемычку состояния в положение «0», это переведет плату в режим работы, и теперь она должна начать работать на основе загруженного кода. В этот момент вы можете отключить FTDI и подать питание на плату через USB. Если код не запускается после включения питания, убедитесь, что вы правильно восстановили перемычку и подали питание на плату.

Вы должны увидеть состояние дисплея, как показано на следующем изображении.

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

Тот же код реализован на Arduino Uno. Результат показан на изображении ниже.

Сравнивая эти два значения, мы видим, что «Blue Pill» более чем в 7 раз быстрее, чем Arduino Uno. Это делает ее идеальным для проектов, которые включают в себя тяжелую вычислительную обработку и временные ограничения. Небольшой размер этой платы также служит здесь преимуществом, так как она только немного больше, чем Arduino Nano, и ее можно использовать там, где Nano не будет достаточно быстрым.

Источник

Adblock
detector