Forum: Mikrocontroller und Digitale Elektronik STM32, ST-Library oder Registerarbeit?


von Mike (Gast)


Lesenswert?

Hallo,

ich arbeite mich gerade in die ST32-Mikrocontroller ein (M3 / M4). ST 
stellt für das Programmieren seine Standard-Library zur Verfügung. Ich 
frage mich nun, ob es sinnvoll ist, sich in die Library einzuarbeiten 
oder lieber, wie beim AVR, eher direkt mit den Registern zu hantieren.

Die Library wird zwar wahrscheinlich eine große Hilfe bei der Portierung 
unter den verschiedenen ST-Controllern darstellen. Am Beispiel der 
GPIO-Ansteuerung kann ich mich bislang jedoch nicht recht damit 
anfreunden, lange Struct-Variablen-Konstruktionen zu füllen, wenn dieses 
auch mit einem direkten Registerzugriff zu erledigen wäre. Auch stolpere 
ich noch sehr über die Abhängigkeiten der einzelnen Bibliotheksteile, so 
dass ich mich noch sehr an den Beispielkonfigurationen von Keil entlang 
hangeln muss.

Wie seht ihr das? Macht es Sinn, sich in die Bibliothek einzuarbeiten? 
Codiert man den Controller lieber registerorientiert á la AVR? Da mir 
noch die Übersicht fehlt, wäre ich für ein paar kritische Worte dankbar.

Mit Gruß

Mike
von (prx) A. K. (prx)


Lesenswert?

Es gibt dazu verschiedene Ansichten. Mir sind in den meisten Fällen die 
Register lieber, weil ich dafür nur eine Doku brauche statt zwei, und 
nicht noch Fehler der Lib einplanen muss. Viele verwenden jedoch die 
Lib.

Wirklich portable sind nur die Funktionen vom CMSIS, also diejenigen, 
die Teil des Cortex M Cores ansprechen, wie NVIC und Systick. Die 
anderen sind nicht einmal innerhalb der STM32 Familie ganz einheitlich 
(F1/F2/F4).
von Klaus K. (klkl)


Lesenswert?

Hallo Mike

Was willst du erreichen?

Ist dies eine einmalige Geschichte, wo es dir eher auf das Verstehen des 
internen Ausbaus ankommt. Keiner wird dies weiter verwenden, geschweige 
denn auf einen ähnlichen Prozessor portieren? -> dann kann man sich das 
alles selbst erarbeiten und muss nicht unbedingt die vorgefertigen Dinge 
verwenden. Ein wenig Geschwindigkeit kann man damit evtl. auch 
herausholen (was normalerweise völlig unwichtig ist...).

Oder soll damit nochmal jemand etwas anfangen können?

Gruß Klaus
von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Zu beginn würde ich eher zur Library tendieren, denn alle ST Demos sind 
darauf aufgebaut.

Wenn man sich ein wenig rein gearbeitet hat, dann kann man auch direkt 
die Register verwenden.

Die meisten Library-Befehle für die Initialisierung sind auch nur ein 
wenig Bits hin und her schieben, das bekommt man auch mit Register 
selbst hin.

Ich verwende gerne z.B. für die Initialisierung der GPIO Pins die 
Library, hingegen für das Bit-EA die GPIOx->... Register direkt.

Man kann Problemlos mischen.

Schlussendlich ist es Geschmackssache.


PS: Auch in der ST-Lib gibt es zwischen STM32F1xx und F2xx/F4xx 
Unterschiede.
(Andere PLL Berechnung, GPIO ist neu am AHB nicht mehr am APB)

zwischen F2xx und F4xx gibt es kaum einen Unterschied.
von Mike (Gast)


Lesenswert?

Hallo,

vielen Dank für Eure Antworten.

Mit dem STM32 möchte ich neben dem AVR eine Alternative für höhere 
Anforderungen auf Lager haben. Zur Zeit arbeite ich in erster Linie mit 
AVR, kam in letzter Zeit jedoch ein paar Mal an dessen Grenzen. Entweder 
aufgrund des Speichers oder aufgrund seiner Taktung/Rechenleistung.

Weiterentwicklung durch und mit anderen Personen kommt vor, hat aber 
zunächst keine Priorität. Die Einarbeitung soll nicht nur einem kurzen 
Kennenlernen dienen, sondern es sollen, wenn es sich als sinnvoll 
erweist, Problemstellungen mit diesen Controllern bearbeitet werden.

Mit Gruß

Mike
von Arc N. (arc)


Lesenswert?

Mike schrieb:
> Hallo,
>
> vielen Dank für Eure Antworten.
>
> Mit dem STM32 möchte ich neben dem AVR eine Alternative für höhere
> Anforderungen auf Lager haben. Zur Zeit arbeite ich in erster Linie mit
> AVR, kam in letzter Zeit jedoch ein paar Mal an dessen Grenzen. Entweder
> aufgrund des Speichers oder aufgrund seiner Taktung/Rechenleistung.

Warum dann nicht AVR32 UC3? Da gäbe es mit dem AVR Software Framework 
auch entsprechende Libraries die neben den AVR32 UC3s auch die megaAVRs 
und XMEGAs unterstützen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.