Stm32f103c8t6 программирование arduino ide
Какую статью добавить следующей?
Быстрый старт STM32F103C8T6 + Arduino IDE
Отладочная плата F103C8T6 на базе STM32 по параметрам значительно опережает аналогочные по размеру Arduino Nano или Leonardo, а по скорости близка к Arduino DUE. Есть интерес попробовать, но у новичка могут возникнуть трудности с первым запуском и программированием данной платы. Теперь есть возможность заливать скетчи через Arduino IDE. Подробности далее.
1. Отличия STM32F103C8T6 от Arduino Nano v3.0
STM32F103C8T6 | Arduino Nano v3.0 | |
---|---|---|
Частота ядра | 72 МГц | 16 МГц |
Память для кода (Flash) | 64 кбайта | 32 кбайта |
Память для переменных ОЗУ (SRAM) | 20 кбайт | 2 кбайта |
Рабочее напряжение | 3.3В | 5В |
Память EEPROM | отсутствует, но существуют программные эмуляторы | 1 кбайт |
2. Подготовка железа
Для работы нам понадобится:
Для активации режима программирования на плате STM следует преставить перемычки: первая на 1, вторая на 0.
Конвертер FTDI переключить на питание 3.3 Вольта (перемычкой/джампером)
Соединить проводами плату (П) и конвертер (К):
3. Подготовка ПО
- Скачать дополнение для Arduino IDE, которое будет поддерживать платы STM32
- Распаковать архив в папаку HARDWARE, которую можно найти в папке вашей Arduino IDE
- Запустить Arduino IDE (или перезапустить если была открыта) и проверить появился ли раздел STM32 Boards в списке Плат
4. Закачка скетча (blink) в плату
В папке которую мы распаковали в п.3.б заходим по следующему пути: Arduino_STM32\examples\Digital\Blink\ и через Arduino IDE открываем файл blink.ino либо можете взять текст отсюда:
void setup() // initialize digital pin PB1 as an output. pinMode(PC13, OUTPUT); > // the loop function runs over and over again forever void loop() digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second >
- Выбрать плату Generic STM32F103C series
- Выбрать Variant: (20k RAM. 64k Flash)
- Выбрать Upload method: «Serial»
- Выбрать Порт: (порт сооответствующий FTDI конвертеру)
Жмем кнопку Вгрузить и результат сразу должен быть виден.
Всё сделал по описанию,но при загрузке появляется ошибка
Arduino: 1.6.5 (Windows 7), Плата»Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), STM32duino bootloader»
Изменена опция сборки, пересобираем все
Cannot run program «\bin\arm-no ne-eabi-g++» (in directory «.»): CreateProcess error=2, Не удается найти указанный файл
Это сообщение будет содержать больше информации чем
«Отображать вывод во время компиляции»
включено в Файл > Настройки
Та же проблема. Сначала думал, что мешает установленная Java — нет. На абсолютно чистой системе, с Arduino 1.6.4, Arduino STM32 master, и установленным драйвером виртуального COM порта, тоже ничего не работает. Ошибка та же самая.
Проверено на версиях Arduino 1.6.0, 1.6.4, 1.6.5, 1.6.6, 1.6.8. (именно 1.6.5 видно на одном из скриншотов). Ни на одной не работает.
Предлагаю Автору, если у него ещё осталась работающая версия данного программного решения, поделится абсолютными путями указанных в статье файлов, в т.ч. exe-шника Ардуино и файла blink.ino, а также написать содержимое папки hardware, и находящейся в ней папки Arduino_STM32-master.
Описанное дополнение для Arduino IDE идет без тулчейна для компиляции (о чем собственно и ошибка: не найден GCC компилятор для arm’ов). Что бы заработало как у автора, нужно инсталлировать в «Менеджере плат» поддержку «Arduino SAM Board (32-bitd ARM Cortex-M3)». Вместе с поддержкой этой платы установится и нужный компилятор.
—
И еще, обратите внимание на строчки в скетче
pinMode(PC13, OUTPUT);
digitalWrite(PC13, HIGH);
digitalWrite(PC13, LOW);
в оригинальном примере идущим с IDE
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
— так тоже откомпилится без ошибок, но работать не будет должно стоять PC13
—
И еще, перед каждой заливкой скетча плату надо ресетить, для запуска UART загрузчика.
Надо поставить правильный компилятор: https://launchpad.net/gcc-arm-embedded/
Файл Arduino/hardware/Arduino_STM32/STM32F*/platform.tx t модифицировать, как пишут здесь: http://www.stm32duino.com/viewtopic.php?f=21&t=1200&p=15192&hilit=arm+none#p15192
Ошибка с arm-none-eabi-gcc.path ушла. Но посыпало много других ошибок. В основном, о несоответствии типов данных. Какая-то нестыковка с версиями библиотек. Вобщем, сыровато это пока..
Мне помогла замена строки в файле Arduino/hardware/Arduino_STM32/STM32F*/platform.txt
Было так:
runtime.tools.arm-none-eabi-gcc.path=/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1
Стало так:
compiler.path=d:/EmBitz/share/em_armgcc/bin/
Естественно предварительно установил EmBitz
Всё заработало как в тексте.
Подгрузил только библиотеку «Arduino SAM Board (32-bitd ARM Cortex-M3)».
Не забывайте про перемычку на плате перед прошивкой!
А на этой плате пойдет скетч с nano? Просто если поменять пины выходов, то скетч который у меня заработал на nano выдь должен пойти и на этой платке?
У меня все заработало с первой попытки по рекомендациям статьи. Светодиод мигает Arduino IDE 1.8.1, Установил в медежере плат http://dan.drown.org/stm32duino/package_STM32duino_index.json и после этого вид платы STM32F1
Вот так:
C:\Users\Saddamko\AppData\Local\Temp\arduino_build_147792/sketch_jan14b.ino.bin
stm32flash 0.4
Using Parser : Raw BINARY
Interface serial_w32: 230400 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
— RAM : 20KiB (512b reserved by bootloader)
— Flash : 128KiB (sector size: 4×1024)
— Option RAM : 16b
— System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x08000100 (3.15%)
.
Wrote address 0x08001fb8 (100.00%) Done.
Starting execution at address 0x08000000. done.
Подскажите что делать, если нет FTDI конвертера? Вместо него подойдет ISP программатор или аналог ардуино TE-MINI328? Или вообще начисто к компу можно подключить STM32F103C8T6 без посредников?
Подойдет любой USB TTL конвертер, главное обеспечить 3.3В на сигнальных проводках. Можно и ардуинкой обычной 5вольтовой в режиме UART моста, тогда придется делитель напряжения делать для TX/RX.
Подскажите пожалуйста по моей ошибке.
Arduino: 1.6.5 (Windows XP), Плата»Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), Serial, 72Mhz (Normal)»
arm-none-eabi-g++: error: C:\Temp\build1270749402357376224.tmp/core.a: No such file or directory
Файл или папку core.a: не может найти
Stm32f103c8t6 программирование arduino ide
В этом руководстве (перевод [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
+—-+
Вид на штырьки разъема снаружи:
+—-+
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
+—-+
Автор оригинальной статьи [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).
Соедините 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 кГц.
1. How to program a STM32 Blue Pill with Arduino site:idyl.io.
2. Blue Pill STM32F103C8T6.
3. STM32F103 «Blue Pill» modified board.
4. rogerclarkmelbourne / Arduino_STM32 site:github.com.
5. Платы STM32 на сайте vcc-gnd (на китайском языке).
6. Загрузчик STM32F42xxx и STM32F43xxx.
7. 201222STM32F103C8T6-BluePill.zip — пакеты ПО, документация.