Хотя плата за 2 доллара дешевая и встречается очень часто, ее установка и запуск немного запутаны. Вот краткое руководство о том, как настроить его для программирования непосредственно с USB.

Пустая плата STM32F103 поставляется только с загрузчиком USART по умолчанию. Несмотря на то, что на плате есть порт USB, вы не можете использовать его для программирования, потому что у него нет соответствующего загрузчика.

Я получил свою доску менее чем за 2 доллара в Advanced Tech на AliExpress. Нам нужно использовать простой преобразователь USB в UART, чтобы запрограммировать плату через USART с помощью загрузчика USB, а затем мы можем вернуться к программированию напрямую через USB.

Сначала подключите USB к конвертеру Serial / UART / TTL следующим образом:

На изображении выше вы видите две желтые перемычки, отмеченные BOOT0 и BOOT1. Они определяют источник кода микроконтроллера. В состоянии по умолчанию, когда оба они равны 0, микроконтроллер использует собственный загрузчик флеш-памяти, которого сейчас нет, и который мы добавляем. На данный момент, чтобы иметь возможность программировать микроконтроллер с помощью USART, вам нужно установить BOOT0 как 1 и оставить BOOT1 на 0. В основном переместите первую перемычку и оставьте вторую.

Теперь загрузите скрипт python stm32loader и запустите его, чтобы убедиться, что все необходимые зависимости удовлетворены. Мне пришлось pip install pyserial, чтобы заставить его работать.

Теперь нам нужен двоичный файл, который мы хотим использовать в качестве загрузчика - мы воспользуемся загрузчиком stm32duino от Роджера Кларка. Основываясь на репо, нам нужно найти, к какому выводу подключен светодиод, то есть к выводу PC13 для нашей платы согласно этой вики. Следовательно, нам нужен этот файл.

Когда у вас есть файл, теперь нам просто нужно запустить следующее (после добавления правильного порта и ссылки на файл):

python ./stm32loader -p /dev/tty.SLAB_USBtoUART -w ~/Downloads/generic_boot20_pc13.bin

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

Теперь мы готовы программировать через USB. Отключите все и используйте USB для подключения. Убедитесь, что ваш компьютер распознает устройство, используя dmesg или перейдя в раздел Об этом Mac ›Системный отчет› USB. Вы должны увидеть устройство как Maple (аппаратное и программное обеспечение, над которым мы работаем выше, - все благодаря замечательным людям из Maple Labs.)

Теперь в Arduino установите оборудование Arduino Due с помощью Boards Manager (выполните поиск в Интернете, если вы не знакомы с этим шагом). Также скачайте Arduino_STM32 и поместите в директорию вашего оборудования Arduino. См. Эти шаги установки для получения дополнительной информации.

Теперь, после перезапуска IDE, вы сможете выбрать «Generic STM32F103C series» в списке плат и загрузчик STM32duino в качестве метода загрузки.

Теперь из примеров выберите пример Blink и измените вывод светодиода на PC13. Теперь нажмите «Загрузить» (после нажатия кнопки «Сброс» на плате), и вы должны увидеть сообщения консоли о том, что код загружается.

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

Задача расширения: используйте те же самые шаги, чтобы вместо этого прошить прошивку Black Magic Probe и сделать свой собственный программатор способным запускать сервер gdb для отладки с использованием точек останова! (Обновление: Успех! См. Эту статью.)

Если вам понравилась статья, нажмите "Рекомендовать"! Следуйте за мной, чтобы узнать о моих будущих проектах. Этот пост основан на работе Роджера Кларка.