STM32F446

Wichtige Information

In diesem Bereich finden Sie die Beispielprojekte in der Form, wie sie im Buch vorgestellt werden (mit vollständiger Dokumentation).

Informationen zur hier verwendeten Version der MCAL-STM-Bibliothek

Die in diesem Abschnitt des Downloadbereichs verfügbare MCAL-STM-Version ist nicht mehr auf dem aktuellen Stand! Nach der Fertigstellung des Manuskripts habe ich neue Erkenntnisse in eine neue Version der MCAL-STM einfließen lassen: Teilweise habe ich nur einzelne Funktionen umbenannt (und die 'alten' Funktionen aus Gründen der Kompatibilität als deprecated (veraltet) gekennzeichnet, teilweise habe ich aber auch Fehler 'gefixt'. Und schließlich habe ich einige Funktionen hinzugefügt, die im Buch noch gar nicht verfügbar sind und dort daher auch gar nicht beschrieben sind! Trotz größter Sorgfalt kann ich nicht ausschließen, dass die im Buch abgedruckten Listings (bzw. die Beispiele in diesem Downloadbereich) geringfügig modifiziert werden müssen, wenn Sie die neue und aktuelle Version der MCAL-STM verwenden. In der Buch-Version der MCAL-STM ist eine Vielzahl von Funktionen noch gar nicht vollständig implementiert (z.B. die Einstellung der Zählrichtung von Timern/Countern).

Obwohl die neue MCAL-STM stetig weiterentwickelt wird und daher noch nicht vollständig fertiggestellt ist, sollten Sie für Ihre eigenen Projekte immer die neue Version der MCAL-STM verwenden. Ich behalte mir aber vor, auch hier noch Änderungen an den bereits vorhandenen Funktionen durchzuführen. Ein typisches Beispiel für derartige Änderungen ist beispielsweise die Zusammenfassung von derzeit getrennten Funktionen zum Aktivieren/Deaktivieren einzelner Peripheriekomponenten in einer Funktion. Wenn es beispielsweise jetzt zwei Funktionen timerStartTimer(TIM_Typedef *tim) und timerStopTimer(TIM_Typedef *tim) gibt, so könnte dies in Zukunft folgendermaßen gelöst sein: timerSetRunMode(TIM_Typedef *tim, TIMER_RUNMODE_t mode), wobei TIMER_RUNMODE_t dann die Einträge START_TIMER und STOP_TIMER enthalten könnte.

Ich werde die Beispiele aus dem Buch dann entsprechend der neuen MCAL-STM neu erstellen. Derzeit können Sie die MCAL-STM-Bibliothek sowie die Beispielprojekte ausschließlich von der Verlagswebseite oder hier herunterladen. Zukünftig werde ich das bisher noch private Repository auf https://gitlab.com öffentlich machen. Ich werde Sie über den News-Eintrag auf dieser Webseite informieren, wenn der Zeitpunkt gekommen ist.

Noch eine Information zur Dokumentation

Die neue MCAL-STM wurde vollständig unter Einsatz des Open-Source-Tools Doxygen dokumentiert. In der von mir bisher verwendeten Standardeinstellung werden die Themen alphabetisch sortiert, was dazu führt, dass Funktionen, die von der Art ihrer Anwendung zusammengehören, scheinbar 'wild durcheinander gewürfelt' sind. Das gefällt mir nicht! Daher hatte ich heute (04.03.2021) damit begonnen, die Dokumentation neu zu sortieren und konnte dies inzwischen sogar fertigstellen. Zunächst einmal habe ich die Dateien in den Bereich Modules der Dokumentation verschoben. Hier finden Sie nun im Regelfall die folgende Dokumentationsstruktur:

  • mcal<Komponentenbezeichnung>
    • Deprecated Functions
    • Macros
    • Standard Functions
    • Advanced Functions

In wenigen Fällen habe ich mich für eine andere Struktur entschieden, z.B.:

  • mcal<Komponentenbezeichnung>
    • Deprecated Functions
    • Macros
    • Standard Functions
    • Interrupt and DMA Functions

Ich denke, dass die neue Struktur den Einsatz der MCAL-STM einfacher gestaltet.

Und schließlich noch eine Bitte an Sie:

Beteiligen Sie sich bitte aktiv an der Entwicklung der MCAL-STM. Viele Peripheriekomponenten (hierunter die meisten seriellen Schnittstellen) fehlen derzeit noch. Und da auch ich nicht fehlerfrei bin ;-) weisen Sie mich bitte auf Fehler hin, die ich im gegenseitigen Interesse dann korrigieren kann. Vielen Dank im Voraus.

Ein letzter Hinweis:

Die Archivdatei stm32f4xx-Alle-Projekte.zip enthält alle Projekte. Die Einzelprojekte müssen Sie dann, wenn Sie sich für den Download von stm32f4xx-Alle-Projekte.zip entscheiden, nicht separat herunterladen.

Neue MCAL-Version (Stand: 10.04.2021)

10.04.2021

Die Datei mcalTimer.c umfasste noch im März "nur" 56 Funktionen und war daher noch nicht vollständig. Inzwischen habe ich ca. 40 weitere Funktionen hinzugefügt: Die Vielzahl der Funktionen führte dazu, dass die Übersichtlichkeit stark eingeschränkt war. Bereits im März 2021 hatte ich damit begonnen, mcalTimer.c und mcalTimer.h umzustrukturieren. Diese Umstrukturierung ist nun abgeschlossen!

Daher habe ich mich dazu entschlossen, das GitLab-Repository zur MCAL-STM-Bibliothek nun für die Allgemeinheit zu öffnen. Das Repository können Sie über diesen Link zum gitlab-Repository erreichen.

Erläuterungen:

Statt der beiden genannten Einzeldateien habe ich nun ein Verzeichnis mit dem Namen mcalTimer angelegt, das wiederum mehrere nach Funktionalitäten unterteilte Dateien enthält. Exemplarisch möchte ich dies an den Input-Capture-/Output-Compare-Funktionen beschreiben.

  • Die Datei commonCapComp.c enthält nun nur noch Funktionen, die universell sowohl für Input-Capture wie auch Output-Compare eingesetzt werden.
  • Die Funktionen, die sich ausschließlich auf Input-Capture-Funktionalitäten beziehen, finden Sie nun in der Datei imputCapture.c.
  • Entsprechend enthält die Datei outputCompare.c nun nur noch Funktionen für die Output-Compare-Funktionalitäten.
  • Die Datei mcalTimer.h, die früher wirklich alles zu Timern enthielt, stellt jetzt nur noch die Funktionsprototypen aller Timer-Funktionen bereit.
  • Die (vielen) Typdefinitionen habe ich hingegen  in die Datei typedefs.h ausgelagert.

Ich verspreche mir von dieser Umstrukturierung eine erheblich bessere Übersichtlichkeit, was letztendlich zu einer einfacheren Pflege der Dateien/Funktionen führt. Um die Möglichkeit auszuschließen, dass zwei oder mehr verschiedene Varianten der MCAL-STM im Internet "umhergeistern", werden Sie den Sourcecode der Bibliothek ab sofort AUSSCHLIESSLICH IM OBEN GENANNTEN REPOSITORY finden!

Anmerkung:

Die Datei dmac.c werde ich in Kürze ebenfalls umstrukturieren. Die Dateien zu den anderen Peripherie-Komponenten enthalten (zumindest derzeit) sehr wenige Funktionen und sind daher recht übersichtlich: Sie bleiben (zunächst) unverändert erhalten. Ich schließe aber nicht aus, dass ich aus Gründen der Konsistenz auch die Dateien zu den anderen Peripheriekomponenten — trotz ihres geringen Umfangs — entsprechend umstrukturieren werde.

Beachten Sie bitte, dass das Repository auch erste (sehr alte) Entwürfe von Beispielprojekten enthält. Sie sind weder getestet noch vollständig: Verwenden Sie diese Beispiele bitte NICHT! Hierfür habe ich ein weiteres Repository vorbereitet, das derzeit aber noch leer ist und daher noch nicht freigegeben wird.

Disclaimer:

Die neue Version der MCAL-Bibliothek befindet sich weiterhin im Experimental-Stadium: Sie wird sich mit Sicherheit noch verändern und sollte daher noch nicht für kommerzielle Anwendungen eingesetzt werden! Sofern ich Verbesserungen in die Bibliothek einfließen lasse, werden die ursprünglichen Funktionen als "deprecated" (veraltet) markiert: Sie sollten also besonders beim Einsatz dieser Funktionen Vorsicht walten lassen.