Ich verwende für C+ + sehr gerne den Qt Creator. Dieser kann auch mit PlatformIO bzw. umgekehrt.
Das BluePill-Board (Universelles STM32F103-Board) lässt sich damit recht einfach programmieren.
Foto und Pinout von https://commons.wikimedia.org/
Man beachte den geänderten Pullup-Widerstand. Den braucht USB, um richtig erkannt zu werden. Bei meinem BluePill Board war der schon richtigerweise 1k5 (statt fälschlicherweise 10k).
sudo apt install build-essential clang-8 qt5-default qt5-doc qt5-doc-html qtcreator''
python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)" sudo ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio sudo ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio sudo ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb''
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
Im Projektverzeichnis braucht es die Datei platformio.ini
; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:genericSTM32F103R8] platform = ststm32 board = genericSTM32F103R8 framework = arduino upload_protocol = stlink # refer to https://github.com/platformio/platform-ststm32/issues/178#issuecomment-467286677 build_flags = -D USBCON -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC -D HAL_PCD_MODULE_ENABLED -D USBD_VID=0x1EAF -D USBD_PID=0x0004 -D USB_PRODUCT=\"bluepill\"
pio init --ide qtcreator
Im Bereich „Build“ muss angepasst werden:
pio run
pio run –target clean
Im Bereich „Run“ passen wir folgendes an:
pio run –target upload
echo „fertig geflasht“
Wir legen eine neue cpp-Datei an im Verzeichnis src
:
#include <Arduino.h> #undef LED_BUILTIN #define LED_BUILTIN PC13 void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); SerialUSB.begin(9600); } void loop() { digitalWrite(LED_BUILTIN, HIGH); Serial.println("Serial LED OFF"); SerialUSB.println("SerialUSB LED OFF"); delay(1000); digitalWrite(LED_BUILTIN, LOW); Serial.println("Serial LED ON"); SerialUSB.println("SerialUSB LED ON"); delay(1000); }
Mit STRG+B kann man das Projekt bauen. Hierzu ist eine Internetverbindung notwendig, da sich PlatformIO bei Bedarf die entsprechende Toolchain holt. Dieses Feature macht PlatformIO so besonders.
Mit STRG+R starten wir Run, und Qt Creator führt den zuvor entsprechend konfigurierten Befehl
pio run --target upload
aus. Hat alles geklappt, sollte ein Terminalfenster erscheinen mit dem Test „fertig geflasht“.
Ordner der Arduino-Bibliotheken 2) sollten im Projektverzeichnis unter ./lib abgelegt werden. Ein Aktualisieren des Qt Creator-Projektes mittels
pio init --ide qtcreator
ist notwendig, damit der Qt Creator dann die Bibliotheken auch findet 3).
Es gibt einen Bootloader, der das Board rein über USB programmierbar macht - ganz nach dem Geschmack von Arduino. Viele Arduino-Boards verwenden hierfür einen zweiten Mikrocontroller. Der Arduino DUE mit dem Atmel SAM3x8e kann aber auch direkt per USB programmiert werden. Ein im SAM3 fix eingebauter Bootloader ermöglicht dies. STM sieht sowas leider nicht vor. Daher muss ein eigener Bootloader mit einem STlink reingespielt werden. Ob dieser Bootloader schon produktreif ist, muss erst evaluiert werden. In einem Produkt, wo nur der USB-Anschluss zugänglich ist, soll man keinen Reset-Taster drücken oder gar einen Boot0-Jumper setzen müssen.