Forum: Mikrocontroller und Digitale Elektronik ARM / STM32 C Programmierung


von ARM Einsteiger (Gast)


Lesenswert?

Ich spiele mich gerade mit dem UART herum.
Der ist ja nicht sooo kompliziert, und letztlich ist es nicht viel 
anders als beim AVR...

Ich hätte nun, um diesen zu initialisieren einfach die drei Control 
Register befüllt und ab die Post.

Nun sehe ich aber, dass die vom CooCox bereitgestelle "Library" "fertig 
vorverdaute" CMSIS Funktionen zur Verfügung stellt, die das auch machen, 
aber halt auf einem höheren Abstraktionsniveau und eigentlich recht 
"umständlich" und schwerfällig. Es ist alles verständlich und 
nachvollziehbar, jedoch frage ich mich, ob man diesen Code nun verwenden 
soll, oder als Anfänger nicht besser an der Basis bleibt, und die 
Register direkt beschreibt.

Die Frage: was meinen erfahrene ARM Entwickler dazu? Verwendet ihr diese 
CMSIS Funktionen? Irgendwie fühle ich mich um das "Erlebnis betrogen", 
wenn ich die fertig vorgekauten Dinger verwende, andererseits sollte man 
vielleicht gleich von Anfang an kompatiblen und portierbaren Code 
schreiben? Ich bin irgendwie ratlos, welchen Weg ich im Zuge des 
Einstiegs wählen soll...Beides geht nicht.

Bitte um einen Tipp, wie ihr das macht!

von M. N. (Gast)


Lesenswert?

Das hatten wir doch schon.
Beitrag "Re: Einstieg ARM"

von ARM Einsteiger (Gast)


Lesenswert?

Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und 
alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich 
will ich den Controller kennen lernen, und nicht eine Library. Ähnlichen 
Beiträgen gemäß scheint es hier eine Glaubensfrage zu sein, welchen 
Ansatz man wählt. Ich wollte nur vermeiden, dass man mir dann später bei 
irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert 
"hättest du doch die CMSIS genommen" oder "so wie du das machst ist es 
doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige 
Libraries gibt", u.s.w.

Wenn ich den Controller dann besser kenne, kann ich ja immer noch 
abstrakter werden, und auf fertigen Code zurückgreifen.

von holger (Gast)


Lesenswert?

>dass man mir dann später bei
>irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert
>"hättest du doch die CMSIS genommen" oder "so wie du das machst ist es
>doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige
>Libraries gibt", u.s.w.

Ich denke die meisten benutzen den Code von ST.
Warum auch nicht?
Wenn du alles selber machst ist es sehr wahrscheinlich
das du kaum Antworten bekommst wenn du Probleme hast
und mit eigenem Code daher kommst. Den schaut sich
dann eben kaum noch einer an.

von Patrick B. (p51d)


Lesenswert?

Weiter sind die Libs sehr hilfreich, wenn du mit mehreren Controllern 
arbeiten willst. Sei das vom STM32F0 bis zum STM32F4. Hier varieren die 
Defines und Enums nur sehr wenig. Viel weniger als die Register. 
Ausserdem ist es sehr übersichtlich. Ich habe mit einem STM32F4 
angefangen und bin ohne grossen Zeitaufwand auch mit Copy&Past in ein 
STM32F0 eingearbeitet.

von M. N. (Gast)


Lesenswert?

ARM Einsteiger schrieb im Beitrag #3165498:
> Ich wollte nur vermeiden, dass man mir dann später bei
> irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert
> "hättest du doch die CMSIS genommen" oder "so wie du das machst ist es
> doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige
> Libraries gibt", u.s.w.

Das kannst Du nicht vermeiden. Egal was und wie Du es machst - immer 
wird es einen geben, dem das so nicht passt.

Mach es so, wie Du es machen willst. Im Zweifelsfall muß sich der Rest 
der Welt nach Dir richten :-)

von W.S. (Gast)


Lesenswert?

Patrick B. schrieb:
> Weiter sind die Libs sehr hilfreich, wenn du mit mehreren Controllern
> arbeiten willst.

Das halte ich aber für stark geschmeichelt. Versuch mal, mit dem 
Standard-Lib-Zeuchs vom STM32, auf einem LPC zu Potte zu kommen.

ARM Einsteiger schrieb im Beitrag #3165400:
> Bitte um einen Tipp, wie ihr das macht!

Ich kann hier ja nur für mich schreiben: ich schreib mir schlichtweg 
alles selbst, lediglich die Header-Dateien für die jeweiligen 
Controller, also STM32F10xxxblabla.h oder LPCxyzblabla.h benutze ich, 
wenn es geht. Notfalls mach ich mir die auch selbst zurecht.

Ansonsten schreibe ich strikt modular, also beispielsweise eine 
"serial.c" und dazu eine "serial.h" für's Serielle, wobei ich die .h 
eigentlich zwischen verschiedenen uC nie ändere. So hab ich das gleiche 
Interface bei verschiedenen Typen und Architekturen (NXP, ST, Nuvoton, 
Fujitsu ua.)

Wenn du allerdings den GCC benutzt und Code auch für die ARM7 Typen 
schreibst, dann hast du das Problem, ggf. die Interruptroutinen in ne 
separate Quelle auszulagern, weil der GCC (im Vergleich zum Rest der 
Welt) ARM und THUMB in einer Quelle nicht beherrrscht.

W.S.

von Matthias (Gast)


Lesenswert?

ARM Einsteiger schrieb im Beitrag #3165498:
> Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und
> alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich
> will ich den Controller kennen lernen, und nicht eine Library.

Du kannst natürlich alles zu Fuss machen. Aber notwendig ist das nicht 
mehr. Der Trend in der modernen Embeddedwelt geht ganz klar in Richtung 
fertiger Komponenten. Dazu gehören, neben diverser Middleware, zu einem 
grossen Teil auch Treiberbibliotheken.
Viele Entwickler schimpfen zwar darauf weil so eine Fremdbibliothek auch 
Einfluss auf den persönlichen Programmierstil nimmt, aber das ist im 
Grunde esotherisch. Faktisch sind gute Bibliotheken wie die von ST 
durchaus geeignet ein sicheres und funktionales System mit einer Menge 
Zeitersparnis zu erstellen. Mit Coocox wirst du sicher kein SIL-2 
erreichen, aber um zeitgemässe Entwicklung moderner Mikrocontroller zu 
erlernen ist es das richtige Prinzip.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

http://www.ethernut.de/ im SNV Trunk hat  inzwischen Unterstuetzung fuer 
recht viele Devices der STM Baustein.

von STM32F4 Programmierer (Gast)


Lesenswert?

Matthias schrieb:
> Faktisch sind gute Bibliotheken wie die von ST
Wenns mal so wäre...
Beitrag "Re: STM32F4 + MC Library +Keil Steigt da einer noch durch?"

von W.S. (Gast)


Lesenswert?

Matthias schrieb:
> Faktisch sind gute Bibliotheken wie die von ST
> durchaus geeignet..

den Anwender in einem Ozean unnützer #define's zu ertränken und den 
Flash vollzustopfen. Kein Wunder, daß man heutzutage schon für ein 
"Hello World" mindestens ein halbes Megabyte Flash benötigt.

Kopfschüttel..

W.S.

von ARM Einsteiger (Gast)


Lesenswert?

Nach einer kleinen Gewöhnungsphase muss ich zugeben, dass die ST CMSIS 
Library durchaus Vorteile bietet. Das Reference Manual muss man trotzdem 
lesen, genauso muss man anfangs nachsehen, was die Funktionen denn so 
machen und welche Register im Detail beschrieben werden. Man muss sich 
aber nicht mehr um die ganz untersten Details kümmern, z.B. dass man den 
Wert zuerst um 5 Bits nach links schieben muss, bevor man ihn mit dem 
Register verodert...Trotzdem weiß ich, was passiert und lerne die MCU 
genauso gut kennen, als ob ich alles selbst erledige. Vielleicht sogar 
ein wenig besser, da man anhand des Library-Codes gleich sieht, worauf 
es ankommt. Ohne jemals hineingeschaut zu haben würde ich die CMSIS aber 
nicht benutzen wollen, da dies einem totalen Blindflug gleichkäme ;-)

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.