Forum: Mikrocontroller und Digitale Elektronik STM32 µController programmieren, wie denn jetzt?


von Jan K. (jan_k)


Lesenswert?

Hi Leute!

Ich habe in der Uni erstmalig mit µControllern was zu tun gehabt und 
habe großes Interesse in die kleinen Teile bekommen. Wir hatten ein 
Praktikum und haben dort in Assembler programmiert. Das ging dann so, 
dass wir geguckt haben, was wir machen wollen und haben wir aus dem 
Datenblatt die OP Codes und so benutzt.
Wie es der Zufall so will benutzt der Fachbereich, bei dem ich als Hiwi 
arbeite auch zunehmend µC, allerdings den STM32.
Ich möchte mich da einarbeiten, mir steht es aber erstmal frei, wie ich 
das Teil programmiere, also ob direkt in Assembler, wie wir es in der 
Uni gemacht haben, oder in C mit der riesigen Bibliothek, die ST 
bereitstellt, oder eventuell ein Mix aus beidem? Ich habe es schon 
gerne, wenn ich weiß, was der Controller so macht, habe das Gefühl, dass 
die Libs das etwas verschleiern...
Was würdet ihr denn für den Anfang empfehlen, könnt ihr mir da ein paar 
Tips geben?

Mfg,
Jan

von Oliver J. (skriptkiddy)


Lesenswert?

Jan K. schrieb:
> Was würdet ihr denn für den Anfang empfehlen, könnt ihr mir da ein paar
> Tips geben?

Dir für zu Hause nen AVR / PIC zus besorgen und den zu befeuern und 
Routine aufbauen. Gleich auf nen STM32 loszugehen, und vor allem noch in 
Assembler, könnte dir schnell die Lust rauben mit µC weiterzumachen.

Welchen µC hast du in deinem Praktikum denn beim Wickel gehabt?

Gruß Skriptkiddy

von Jan K. (jan_k)


Lesenswert?

Im Praktikum hatten wir nen MSP430.
Ich muss das Dingen ja nicht in Assembler programmieren, ist vermutlich 
eh etwas komplex ;)
Wir haben halt nur im Praktikum in Assembler gebastelt.

Ich kann C++ und C programmieren, aber klar, dass ich mich für den µC 
umstellen muss. Wie geht man denn beim STM32 am ehesten vor, wenn man 
z.B. einen Port einschalten möchte? Schreibe ich dann direkt in das 
jeweilige Register, oder nehme ich besser die vorgefertigen Funktionen?

Oder wird der mich definitiv fürn Anfang erschlagen?

von (prx) A. K. (prx)


Lesenswert?

Jan K. schrieb:

> Oder wird der mich definitiv fürn Anfang erschlagen?

Wahrscheinlich. Zu komplex für den Anfang. Zu viele Möglichkeiten, zu 
viel zu beachten.

Solch einen 32-Bitter programmiert man nicht in Assembler. Nicht wenn 
man es vermeiden kann. Die kommen ganz gut mit C und C++ zurecht.

von Simon K. (simon) Benutzerseite


Lesenswert?

A. K. schrieb:
> Solch einen 32-Bitter programmiert man nicht in Assembler. Nicht wenn
> man es vermeiden kann. Die kommen ganz gut mit C und C++ zurecht.

Stimmt. Die Dinger sind üblicherweise so komplex, dass die in der Regel 
mit einer fertigen C/C++ Bibliothek vom Hersteller kommen.

Ich seh das bei Assembler so: Um produktiv damit zu arbeiten muss man 
Purist sein. Ansonsten wirds zu schnell unübersichtlich. Aber trotzdem 
sollte man das mal gemacht haben. Da lernt man ganz gut die Abläufe in 
so nem Prozessor. Hast du ja auch gemacht am MSP430. An einem STM32 
würde ich damit aber gar nicht erst anfangen.

von (prx) A. K. (prx)


Lesenswert?

Simon K. schrieb:

> Stimmt. Die Dinger sind üblicherweise so komplex, dass die in der Regel
> mit einer fertigen C/C++ Bibliothek vom Hersteller kommen.

Sicher. Allerdings kenne ich diese Bibliothek in diesem Fall ein 
bisschen. Und besonders ihre Dokumentation. Wenn man das so nennen kann.

Ein Timer vom AVR ist auf Registerebene erheblich umgänglicher als einer 
vom STM32 über diese Bibliothek. Das erste Erfolgserlebnis ist deutlich 
leichter zu kriegen, wenns nicht bloss darum geht, in halbem Blindflug 
durch Sample-Code zu stolpern, sondern selber welchen zu schreiben.

von Juergen G. (jup)


Lesenswert?

Meiner Meinung nach kann man Assembler fast immer vermeiden, schon aus 
Gruenden der Produktivitaet und Wiederverwendbarkeit des Codes.
Das war der eigentliche Grund warum Programmiersprachen wie C entstanden 
sind.

Ich schreibe alles in C und wenn's mal kritisch zugeht lasse ich mir den 
Asm-Code vom Compiler erstellen mache es da passend un binde es als 
Inline Asm in den C Code ein.

Wenn Du genau wissen willst was der Controller macht, dann musst Du ja 
nicht die Libs vom Hersteller verwenden, sondern kannst so nach und nach 
Deine eigenen bauen.

Doch wie meine Vorredner schon schrieben, da gleich mit einem 32 Bitter 
anzufangen ist wie als Fussgaenger den K2 besteigen zu wollen.

Ein guter Rat ist, beschaeftige Dich mal mit den Werkzeugen der 
Programmierung. Ich meine damit das was hinter den Kulissen abgeht.

Ich habe keine Ahnung was Du darunter verstehst wenn Du sagst Du kannst 
C und C++, aber wenn einer mal ein bischen was mit Visual Studio in C 
oder C++ Programmiert hat, dann ist er noch Meilenweit davon entfernt zu 
wissen was C Programmierung ist.

Lies mal ein bisschen in der Dokumentation von gnumake, gcc und 
binutils.
Die sind echt gut geschrieben. Und wenn Du alles verstanden hast, dann 
wirst Du sehen das man mit C genau so viel controlle haben kann wie mit 
Assembler nur eben viel Komfortabler.


Ju

von newmicro (Gast)


Lesenswert?

@Jan K., hast du vielleicht Unterlagen zu dem MSP430 und den Sachen die 
ihr damit im Praktikum gemacht habt?

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.