Inhaltsverzeichnis

STM32

Die STM32 Mikrocontroller der Firma STMicroelectronics ist sehr beliebte Mikrocontroller Familie basierend auf dem Cortex-M Kern der Firma ARM. Es gibt diese in verschiedenen Ausführungen in unterschiedlichen Gehäusen, Peripherie, Rechenleistung, Speicher und Ratings. Diese Flexibilität erlaubt es, für jedes Projekt den passenden Mikrocontroller/prozessor zu suchen, leider bedeutet es auch viel Arbeit diese zu Programmieren, da man die speziellen Eigenschaften des gerade gewählten Controllers berücksichtigen muss.

Hardware

ST bietet unterschiedliche Serien an, die auf unterschiedlichen Kernen aufbauen. ARM bietet die Kerne Cortex-M0, M3 und M4 an.
Der Cortex-M0 ist der leistungsschwächste Kern, hat keine FPU(Floating Point Unit, Rechenwerk für Fließkommazahlen) und spart auch sonst alles unnötige ein. Dafür ist dieser aber sehr sparsam im Energieverbrauch und kostengünstig. Daher ist die Zielapplikation eher kleine Steuer und Regelkreise sowie weniger komplizierte Berechnungen oder Interfacearbeiten.
Der Cortex-M3 bietet schon mehr Funktionalität, hat aber auch keine FPU. Der Prozessortakt kann bis über 100MHz gehen.
Der Cortex-M4 ist dem Cortex-M3 gleich, hat aber eine FPU. Für Anwendungen wo (viel) mit Fließkommazahlen gearbeitet wird, ist dieser also praktisch.
Die Cortex-Kerne sind aber nur das reine Rechenwerk. Peripherie wie USARTs, Timer, ADCs und andere gehören nicht dazu. Diese Peripherie wird vom Hersteller hinzugefügt. Welche Controller welche Peripherie besitzen muss man den Tabellen von ST entnehmen.

Programmieren

Da die STM32 auf einem ARM Kern aufbauen ist Compiler für diese Architektur notwendig.
Davon gibt es auf dem Markt eine ganze Menge zu unterschiedlichen Preisen. Es gibt auch eine GCC Version für den ARM. Man muss beachten, dass es große Unterschiede zwischen den Compilern geben kann. Das kann mit unterschiedlichen Code-Größen anfangen, über die Ausführungsgeschwindigkeit bis zur totalen Disfuntkionalität reichen. Da es so viele unterschiedliche Mikrocontroller gibt, kann und wird es immer wieder vorkommen, dass die Compiler Bugs haben und Code falsch umsetzten, was dazu führt, dass Semantisch absolut korrekter Code nicht funktioniert. In dieser Hinsicht sind die kostenpflichtigen Compiler in der Regel besser. Aber sie sind nicht zwingen Notwendig, denn der GCC funktioniert ausreichend gut.
Nachdem man sein Programm compiliert hat, muss dieses auch in den Controller. Dazu gibt es unterschiedliche Möglichkeiten, die man jeweils im speziellen Überprüfen muss.
ST spendiert fast allen STM32 einen seriellen Bootloader. Alternativ lädt man den Code über die Debugschnittstellen(JTAG, SWD) oder das Programmierinterface. Was möglich ist, muss man aber immer vorher im Datenblatt und Reference Manual nachlesen. Tipps und tricks zur Programmierung gibt es hier.