STM32 in C programmieren wo anfangen?
-
@john-0 sagte in STM32 in C programmieren wo anfangen?:
Das Problem an der ANSI Auflage ist leider, dass das Buch kein ANSI C beschreibt sondern ein Mittelding zwischen K&R C und ANSI C. Das fängt schon damit an, dass „das erste C-Programm“ so formuliert ist:
C89/C90 erlaubt implicit int, erst C99 verbietet es. Da ist also nichts falsch bei K&RII.
Und wenn du statt -std=c17 -ansi genommen hättest, wäre das auch sichtbar geworden.
-
@Wutz Das ist zwar formal richtig, ich finde es aber so oder so als besseren Stil den Rückgabewert explizit anzugeben.
-
@Wutz sagte in STM32 in C programmieren wo anfangen?:
C89/C90 erlaubt implicit int, erst C99 verbietet es. Da ist also nichts falsch bei K&RII.
Und wenn du statt -std=c17 -ansi genommen hättest, wäre das auch sichtbar geworden.Nicht falsch ist nicht gleich empfohlen und guter Stil. Bitte nicht vergessen aktuell ist C17 und kein ANSI C! D.h. das Compiler Flag für C17 war zwingend notwendig, um zu sehen was an diesem Buch nicht mehr empfehlenswert ist.
-
@ME20001 Am besten wartest du einfach mal bis sich die Experten einig sind.
Aber letzendes ist das Problem schnell zusammengefasst: Das perfekte Lehrmittel existiert nicht
Es kommt nun mal auf deine Anforderungen an. Und entsprechend fallen die Antworten aus. Und zusätzlich ist es natürlich auch eine subjektive Fragestellung ^^
-
@Leon0402 sagte in STM32 in C programmieren wo anfangen?:
@ME20001 Am besten wartest du einfach mal bis sich die Experten einig sind.
Es wird keine Einigung geben, weil es keine "die eine" Antwort gibt:
@DocShoe sagte in STM32 in C programmieren wo anfangen?:
Vielleicht gibt es ja keine Lösung, die 100% richtig ist? Für den einen ist Kompromiss A) wichtiger als für den Anderen.
Ich schätze halt K&R wegen des Fokus auf einen allgemeinen, anspruchsvollen Programmierkurs, john 0 mag halt lieber Exaktheit bei modernen Sprachentwicklungen. Ich würde ja sagen, dass ersteres dem TE bei seiner Fragestellung eher hilft.
-
Meine Meinung wäre jetzt, dass du dir irgendein x-beliebiges Buch, z.B. das Billigste auf Amazon, kaufst und dieses dann durch arbeitest. Du kannst nämlich nicht mal eben so C lernen, weil es da - wie eigentlich überall - jahrelange Erfahrung braucht, um halbwegs so etwas wie ein "Profi" zu werden. Ich bin der Meinung, dass du umso mehr daraus lernst, wenn du das "schlechteste" Buch kaufst.
Beispiel: Das Buch erzählt dir, wie toll globale Variablen sind; alle werden dir hier erzählen, dass globale Variablen total doof sind; du hörst nicht darauf, weil das Buch ja von einem "Intellektuellen" geschrieben wurde, während hier nur komische Typen unterwegs sind, die nichts weiter zu tun haben, als alleine vor dem Computer zu sitzen und Tiefkühlpizza zu essen; irgendwann wirst du dann am eigenen Leib erfahren, dass du das komplette Projekt nach bspw. 7 Tagen Arbeit wegschmeißen kannst, weil es einfacher ist, noch einmal von vorne anzufangen, als den ganzen Murks umzuschreiben.
Unglaublicher Lerneffekt, aber so läuft es eben am Anfang (und später auch noch!).Wenn der Compiler Fehler oder Warnungen (Visual Studio ist da meiner Erfahrung nach sehr penibel, Empfehlung!) ausgibt, solltest du hier natürlich evtl. nachfragen.
-
Die Hersteller von Microcontrollern haben eine Sehr gute Dokumentation ihrer Hardware mit leicht verständlichen Beispielen. Bevor du c- können musst, musst du die Dokumentation nicht auswendig, aber vollumfänglich und detailliert verstanden haben. Dann weist du welche Register du wie lesen und setzten musst um den Controller nach deiner Vorstellung zu betreiben.Wenn du das kannst bist du mit Asambler viel schneller am ziel als mit c
-
@ME20001
Wenn du das hier gelesen und zu mindest umfänglich verstanden hast
... dann beherrschst du auch den Controller, ansonsten bist du von Code und Wissen Anderer abhängig. Das ist nicht weiter tragisch, aber dein Vorhaben diese SO umzuschreiben oder zu Ersetzten erfordert genau dieses Wissen in dem Manual.
-
@Peter-Viehweger sagte in STM32 in C programmieren wo anfangen?:
Ich bin der Meinung, dass du umso mehr daraus lernst, wenn du das "schlechteste" Buch kaufst.
Beispiel: Das Buch erzählt dir, wie toll globale Variablen sind; alle werden dir hier erzählen, dass globale Variablen total doof sind; du hörst nicht darauf, weil das Buch ja von einem "Intellektuellen" geschrieben wurde, während hier nur komische Typen unterwegs sind, die nichts weiter zu tun haben, als alleine vor dem Computer zu sitzen und Tiefkühlpizza zu essen; irgendwann wirst du dann am eigenen Leib erfahren, dass du das komplette Projekt nach bspw. 7 Tagen Arbeit wegschmeißen kannst, weil es einfacher ist, noch einmal von vorne anzufangen, als den ganzen Murks umzuschreiben.
Unglaublicher Lerneffekt, aber so läuft es eben am Anfang (und später auch noch!).Sorry, aber das ist mMn. einfach nur Quatsch und ein katastrophal schlechter Rat. Klar, wenn man etwas selbst falsch gemacht hat und dann gelernt es richtig zu machen, dann weiss man meist besser warum man bestimmte Dinge machen oder eben bleiben lassen sollte. Also besser als jemand dem nur eingetrichtert wurde es auf eine bestimmte Art zu machen bzw. eben nicht zu machen. Nur das Problem ist: man wird haufenweise schlechte Angewohnheiten beibehalten.
-
@EL-europ sagte in STM32 in C programmieren wo anfangen?:
Dann weist du welche Register du wie lesen und setzten musst um den Controller nach deiner Vorstellung zu betreiben.Wenn du das kannst bist du mit Asambler viel schneller am ziel als mit c
Sorry aber das ist auch Quatsch. Es gibt kaum etwas was in Assembler leichter zu schreiben ist als in C.
-
@hustbaer
Ja, wenn du aber die Kentnis der Register und Befehlsätze hast, kannst du den Controller in Asambler programmieren ohne eine Hochsprache lernen zu müssen. Die Hochsprache ist dann eine persönliche Weiterentwicklung. Wenn man auf Bibliotheken Anderer angewiesen ist, Beherrscht man den Controller auch nicht. Wenn man aber c- Beherrscht ist ein re-engeneering des Vorhandenen Codes natürlich einfacher/möglich, aber nur mit detaillierter Kenntnis des Controlers.
-
@EL-europ sagte in STM32 in C programmieren wo anfangen?:
Wenn man auf Bibliotheken Anderer angewiesen ist, Beherrscht man den Controller auch nicht.
Skurille Aussage. Also wenn ich beispielsweise den Softdevice Protokollstack von Nordic nutze, kontrolliere ich den Controller nicht mehr? Stimmt nicht.
-
@EL-europ sagte in STM32 in C programmieren wo anfangen?:
@hustbaer
Ja, wenn du aber die Kentnis der Register und Befehlsätze hast, kannst du den Controller in Asambler programmieren ohne eine Hochsprache lernen zu müssen.Dafür muss man halt Assembler lernen. Wenn das ganze Programm nicht mehr macht als 2-3 Register mit Konstanten zu befüllen, dann schneidet man vermutlich beim Gesamtaufwand (Lernen von Assembler/C + Lernen wie man die Tools bedient + Schreiben des Programms) besser ab wenn man Assembler verwendet. Allerdings ist sehr schnell der Punkt erreicht wo man auch beim Gesamtaufwand mit C besser abschneidet.
Die Hochsprache ist dann eine persönliche Weiterentwicklung.
Ich sehe keinen Grund warum man es nicht gleich mit C machen sollte. Man muss ja schliesslich nicht perfekt C lernen wenn das Programm nur ein paar ganze wenige super einfache Dinge machen soll. Dafür kommt man oft gut mit einem Beispielprogramm + ein bisschen Stack-Overflow/Foren und etwas rumraten durch.
Wenn man aber c- Beherrscht ist ein re-engeneering des Vorhandenen Codes natürlich einfacher/möglich, aber nur mit detaillierter Kenntnis des Controlers.
Detailierte Kenntnisse des Systems braucht er so oder so - ob jetzt mit C oder Assembler macht da keinen Unterschied.