1.0 Arduino für STM32 Überblick
Stoffverteilung entsprechend dem Bildungsplan Jahrgangsstufe 1 TGI Baden Württemberg.
NUCLEO L152RE
Beschafft bei reichelt.de für 20,15€ (zur Zeit wieder ausverkauft)

Pin Belegung

Grüne LED an PA5 (D13) , Blauer UserButton an PC13 mit PullUp-Widerstand und ist entprellt.

- Violett gekennzeichnet sind die PINs (mit ihrer Bezeichnung), die über die Arduino-Konnectoren nach nach außen gezogen sind.
- Blau gekennzeichnet sind die PINs (mit ihrer Bezeichnung), die nur über die STM-Konnectoren erreichbar sind.
- Gelb hinterlegt sind GPIO-Pins die software-seitig als analoger PIN definiert werden KÖNNEN
- Grau hinterlegt sind GPIO-Pins die auf dem Board nicht nach außen geführt sind
Mit analogWrite(Pin,Wert) können nur die 6 von Arduino vorgesehenen Pins verwendet werden.
Aduino Pin | STM32 Pin |
---|---|
D3 | PB3 |
D5 | PB4 |
D6 | PB10 |
D9 | PC7 |
D10 | PB6 |
D11 | PA7 |
Funduino Expansion Board für NUCLEO STM32
Entwickelt von Jörg Sturm, kostet bei Funduio.de 28,90€ pro Stück. Bezeichnung:
ST-JS: Funduino Expansion Board für NUCLEO STM32 – Controller nicht enthalten


LCD-Ausgabe via I2C an Baseshield V1.2?
Das I2C-LCD-Display ist an PA11 (SCL) und PA12 (SDA) angeschlossen. Beim Assembler und bei MBED hat Herr Sturm eine Software I2C-Lösung zur Anbindung verwendet, d.h. es wird nicht die I2C-Hardware des Controllers genutzt, sondern die Schnittstelle ist per Software realisiert.
Die Arduino I2C-Library Wire benutzt standardmässig D15 = PB8 (SCL) und D14 = PB9 (SDA). Meine einfache Lösung sind zwei Drahtbrücken:
- Serial Clock SCL: D15 = PB8 -> PA11
- Serial Data SDA: D14 = PB9 -> PA12
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd (0x27); // LCD-Adresse auf 0x27 für 16 Zeichen und 2 Zeilen ein
void setup() {
lcd.begin(16, 2); // initialize the lcd
lcd.clear();
lcd.setBacklight(255);
lcd.setCursor(0,0); // erstes Zeichen, erste Zeile
lcd.print("MezMedia.de");
}
void loop() {
delay(1000);
lcd.setBacklight(255);
lcd.setCursor(0,1); // erstes Zeichen, zweite Zeile
lcd.print("Viel Erfolg!");
delay(1000);
for (int i= 255;i>=0;i--){
lcd.setBacklight(i);
lcd.setCursor(0, 1);
lcd.printf("Backlight: %d ",i);
delay(50);
}
}
Mit dem Testprogramm erkannt: Die Hintergrundbeleuchtung geht nur an und aus. 😕
Beim STM32L152RE gibt es zwei I2C Schnittstellen, die über eine interne Verdrahtungsmatrix auf unterschiedliche Ports geschaltet werden können. Im Datenblatt ab Seite 47 sind die möglichen Anschluss-Pins für I2C zu finden.
PA11 und PA12 sind leider nicht dabei. 😭
Nach der API-Beschreibung kann die zweite Schnittstelle recht leicht eingerichtet werden, auch dort könnte das LCD-Display mit Drahtbrücken von PB10 und PB11 angeschlossen werden. Leider wird dies mit der BlueTooth Schnittstelle kollidieren.
Oder ich krieg es mit einer Softwarelösung hin…


Pin | I2C |
---|---|
PB5 (D4) | I2C1_SMBA |
PB6 (D10) | I2C1_SCL |
PB7 | I2C1_SDC |
PB8 (D15) | I2C1_SCL |
PB9 (D14) | I2C1_SDA |
PB10 (D6) | I2C2_SCL |
PB11 | I2C2_SDA |
PB12 | I2C2_SMBA |

Probleme mit MacOS 13.0.1 Ventura
Ein UpLoad über “Mass Storage” geht nicht.
In der Datei „massStorageCopy.sh“ unter “~/Library/Arduino15/packages/STMicroelectronics/tools/STM32Tools/2.1.1/macosx” zu finden, die Option -l bei df -Hl entfernen. Resolve upload issues on macOS Ventura