Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Microcontroller STM32F103C8T6 – Übersicht

Posted on 16. Januar 20185. März 2024 by Stefan Draeger

Der Mikrocontroller STM32F103C8T6 verfügt über einen 72MHz ARM Cortex M3 CPU mit 32Bit Architektur und vielen zusätzlichen Features welche ich hier noch näher erläutern möchte.

Microcontroller STM32F103C8T6
Microcontroller STM32F103C8T6

  • Bezug
  • Technische Daten
  • Verbinden mit der Arduino IDE
  • Anschluss über ein FTDI Modul
  • Beispiel Sketch aufspielen
    • Boot Modus einstellen
    • Einstellungen in der Arduino IDE
    • Quellcode
  • Beispiel – interne LED ansteuern
  • Video
  • Troubleshooting
    • Fehler – „Failed to init device“

Bezug

Der Mikrocontroller kann schon ab 1,87 € (inkl. Versandkosten) über eBay.de* bezogen werden. Dieses Board kann aber auch bei amazon.de*, banggood.com (Umrechnungskurs von Dollar zu Euro beachten!) bezogen werden, wobei die Preise hier deutlich höher liegen (Stand 18.01.2018).

Für das Aufspielen von Sketche im seriellen Modus wird ein FTDI Modul benötigt, dieses gibt es wiederum bei eBay.de* für ca. 3 €.

FTDI Modul, UBS zu TTL Signal Converter
FTDI Modul, UBS zu TTL Signal Converter

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Technische Daten

  • CPU
    • ARM Cortex M3
    • Architektur – 32Bit
    • Taktfrequenz – 72 MHz
  • Speicher
    • 64Kb – Flash Speicher
    • 20Kb – SRAM
  • Schnittstellen
    • digitale I/O Pins – 37
    • SPI – 2
    • UART – 3
    • I2C – 2
    • CAN – 1
  • interne RealTimeClock
  • Abmessungen – 22,86 mm x 53.34 mm
  • Eingangsspannung – 2V bis 3.6V
  • Betriebsspannung – 3.3V
  • max. Betriebstemperatur -20 °C bis +70 °C

Zu dem Board gibt es eine Wikiseite, wo weitere Informationen zu finden sind.
Dort gibt es auch eine Grafik mit der Pinbelegung (Pinout).

Verbinden mit der Arduino IDE

Wie man die Arduino IDE installiert habe ich bereits im Tutorial Arduino IDE installieren ausführlich erläutert, in diesem Abschnitt möchte ich auf die Verbindung mit dem STM32F103C8T6 eingehen.

Den Treiber für das Board STM32F103C  kann aus dem GitHub Repository von RogerClarkMelburne (*.zip) geladen werden. Nachdem die ca. 37 MB große Zip-Datei geladen und entpackt wurde, wird das Verzeichnis „Arduino_STM32-master“ in den Pfad C:\Programs\Arduino\hardware der Arduino IDE kopiert.

Nachdem die Arduino IDE gestartet wurde, steht das neue Board unter „Werkzeuge“ -> „Boards: xyz“ zur Verfügung:

STM32 Boards in der Arduino IDE
STM32 Boards in der Arduino IDE

Damit ist die Installation aber noch nicht abgeschlossen, es muss noch über den Boardverwalter das Plugin „Arduino STM32F4“ Version 1.0.1 installiert werden. Es gibt eine Beschreibung wo das Plugin „Arduino SAM boards (Cortex-M3)“ genannt wurde, jedoch hat dieses in meinem Fall nicht zum Erfolg geführt.

Anschluss über ein FTDI Modul

Obwohl der Mikrocontroller über einen Micro USB-Anschluss verfügt muss man diesen über einen separaten FTDI Modul programmieren.

Ein FTDI Modul habe ich bereits im Tutorial zum Arduino ProMini – Anschließen & Programmieren verwendet, möchte hier jedoch auf den besonderen Anschluss eingehen. Der Mikrocontroller ist hier in jeder Hinsicht etwas Besonderes.

FTDI ModulSTM32F103C8T6
 GND GND
VCC3,3 V
RXA9
TXA10
STM32F103C8T6 mit FTDI Modul
STM32F103C8T6 mit FTDI Modul

Beim FTDI Modul ist darauf zu achten das dieses auf 3,3V gepint ist, es gibt auch Module welche „nur“ 5V liefern und sich nicht einstellen lassen. Der STM32F103C8T6 ist nur für eine Eingangsspannung von 2V bis 3,6V geeignet.

Beispiel Sketch aufspielen

Es soll nun ein einfaches „Hello World!“ auf dem seriellen Ausgang ausgegeben werden.

Boot Modus einstellen

Der STM32F103C8T6 verfügt über zwei Boot Modi „0“ und „1“. Über den Boot Modus stellt man den Speicher ein, wo der Sketch hochgeladen werden soll. Wir stellen in diesem Fall den Jumper gegenüber von dem „Reset Taster“ auf „1“ (siehe Bild).

Jumper Position "BOOT1" auf dem STM32F103C8T6
Jumper Position „BOOT1“ auf dem STM32F103C8T6

Einstellungen in der Arduino IDE

Unter dem Menüpunkt „Werkzeuge“ -> „Board: xyz“ wird das Board „Generic STM32F103C series“ ausgewählt.

STM32 Boards
STM32 Boards

Als Nächstes kommt es auf das Model an, dieses kann im Menüpunkt „Variant“ ausgewählt werden.

Varianten des STM32 Boards
Varianten des STM32 Boards

Als letzten Punkt stellt man den Modus ein, mit welchem der Sketch auf den STM32 geladen werden soll, in diesem Tutorial verwende ich ein FTDI Modul und wähle somit „Serial“ aus.

STM32 Upload Method aus der Arduino IDE
STM32 Upload Method aus der Arduino IDE

Quellcode

Der nachfolgende Quellcode wird jetzt sicherlich keine Überraschung, jedoch der Vollständigkeit halber möchte ich diesen hier aufführen.

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Hello World!");
  delay(1000);
}

Auf dem STM32F103C8T6 Board ist unter anderem eine LED verbaut, welche man über den PIN PC13 ansteuern kann, dieses wollen wir nun im nächsten Sketch machen.

Beispiel – interne LED ansteuern

Die interne LED liegt auf dem Pin PC13 und kann wie beim Arduino UNO üblich gesteuert werden.

#define ledPin PC13
const int PAUSE = 1000;

void setup() {
   //LED Pin als Ausgang setzen.
    pinMode(ledPin, OUTPUT);
}

void loop() {
    //Lesen des zustandes der LED (LOW oder HIGH) und den Wert umkehren.
    //D.h. aus LOW wird HIGH und aus HIGH wird LOW.
    digitalWrite(ledPin,!digitalRead(ledPin));
    //Kleine Pause von 1 sek. 
    //um den Interval des Blinkens zu ändern muss hier die Pause verkürzt 
    //oder erhöht werden.
    delay(PAUSE);
}

Video

In dem Video zeige ich wie man das Board STM32F103C8T6 mit dem FTDI Modul verbindet und ein Sketch hochlädt.

Verbinden des STM32F103C8T6 mit dem FTDI under Arduino IDE
Dieses Video auf YouTube ansehen.

Troubleshooting

Fehler – „Failed to init device“

Der Fehler tritt meist beim Upload eines neuen Sketches auf.  Um diesen zu beheben, muss nur der Reset Taster betätigt werden und der Uploadvorgang erneut gestartet werden.

Der Sketch verwendet 7556 Bytes (11%) des Programmspeicherplatzes. Das Maximum sind 65536 Bytes.
Globale Variablen verwenden 1984 Bytes (9%) des dynamischen Speichers, 18496 Bytes für lokale Variablen verbleiben. Das Maximum sind 20480 Bytes.
Failed to init device.
stm32flash 0.4

http://stm32flash.googlecode.com/

Using Parser : Raw BINARY
Interface serial_w32: 115200 8E1

3 thoughts on “Microcontroller STM32F103C8T6 – Übersicht”

  1. Bastian sagt:
    21. Mai 2018 um 19:11 Uhr

    Der Fehler „Failed to init device“ geht leider nicht weg nach dem der Reset Taster betätigt wird.
    Mit dieser Anleitung war es mir nicht möglich ein Programm auf den Microcontroller zu laden.

    Antworten
    1. Hanni sagt:
      27. Juli 2018 um 15:39 Uhr

      Danke fürs Troubleshooting, hab ewig nach dem Fehler gesucht! Bei mir hats super funktioniert 🙂

      Antworten
  2. Helmut Haßfurther sagt:
    5. August 2019 um 08:57 Uhr

    Danke, dieser Blog hat mir geholfen, meinen Stm32 zum laufen zu bringen. Alle anderen schließen den 3.3V VCC-Aushang an 5 V des stm32 an, obwohl vorher darauf hingewiesen wird, dass der Jumper auf 3,3V gesetzt werden muss.

    der sonst erscheindene Fehler:
    Failed to init device.
    stm32flash 0.4
    http://stm32flash.googlecode.com/
    Using Parser : Raw BINARY
    Interface serial_w32: 115200 8E1
    war damit nicht mehr aufgetreten.

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}