Hallo, ich wollte nur einmal fragen, woher ihr eigentlich immer die Informationen zu den ganzen C-Funktionen und structs bekommt. Ich habe bisher nur AVRs programmiert und da eigentlich nur _delay_ms(x) und *_us(x) benutzt. Alles andere wurde immer direkt in die Register geschrieben, die im Datasheet stehen. Nun will ich aber mit ARM anfangen und habe mir dafür ein STM32F103-Board besorgt. Mein Problem nun: Woher bekomme ich die Refernz zu den ganzen structs, mit denen man offensichtlich die GPIOs alle definieren muss. Oder auch die Entsprechungen zu z.B. _delay_ms(x) oder auch ISR(x)? Im Datasheet finde ich dazu eigentlich gar nichts. Danke!
In der Referenz zur AVR-libc gibt's die Doku zu allen C Funktionen: http://nongnu.org/avr-libc/user-manual/modules.html
Okay, danke. Allerdings ging es mir jetzt eher um den STM32F103. Mit dem AVR komme ich eigentlich problemlos zurecht. Nur ist der STM32 mein erster ARM und ich habe keine Ahnung, was es da so für Möglichkeiten gibt, abgesehen von dem, was im Datasheet erläutert wird.
Meist ist sowas direkt in den .h u. .c Files dokumentiert!?
Teo D. schrieb: > Meist ist sowas direkt in den .h u. .c Files dokumentiert!? Naja, ich hatte auf irgendeine Übersicht gehofft. Die *.h files sind schließlich nicht immer wirklich übersichtlich. Aber danke.
Im Reference-Manual stehen alle Register drin und alle Bits. In den header-Dateien sind alle Register und alle Bits definiert unter exakt den selben Namen wie im Reference-Manual nach einem ganz systematischen Schema. Du kannst genauso vorgehen wie beim AVR: Reference Manual studieren -> Code schreiben, es ist kein prinzipieller Unterschied und auch nicht irgendwie schwieriger oder komplizierter, nur teilweise vielleicht etwas umfangreicher. > Die *.h files sind schließlich nicht immer wirklich übersichtlich. In den Headern musst Du auch nicht selber herumsuchen, die IDE hilft Dir mit Vorschlägen und Codevervollständigung beim Tippen der langen Makronamen oder mit einem Mausklick sucht sie Dir die Stelle raus und zeigt sie Dir an. Sobald Du das System raus hast wie du vom Namen im Manual auf den Namen im Header kommst (geht schnell, ist simpel) geht alles wie von selbst. Und wenn Du zum Beispiel weißt wie man einen UART bei einem AVR zum Laufen bekommt wird Dir die gleiche Übung bei einem ARM ebenfalls gelingen, alle Konzepte sind gleich und die Umsetzung sehr ähnlich, vieles wird Dir bekannt vorkommen. > ISR() Dieses magische Makro gibts nicht, bei ARM ist es viel einfacher, eine Interrupt-Funktion ist eine ganz normale Funktion, der Name muß nur genau dem Namen des entsprechenden Interrupt-Handlers entsprechen wie er im Startup-Code definiert ist, der Linker wird sie dann finden und verwenden. Wichtig: bei ARM müssen alle Interrupts zunächst einzeln enabled werden bevor sie funktionieren. Schau Dir am Anfang viel Beispielcode an. Das hilft. Versuche vor allem Minimalbeispiele zu finden die keine monströsen Libs und APIs verwenden, je kleiner und übersichtlicher die Beispiele sind desto schneller kannst Du durchschauen wie was zusammengehört und wie es funktioniert. Sobald Du dort durchblickst und genug Sicherheit darin hast den Beispielcode nach Herzenslust zu modifizieren und umzukrempeln und es danach immer noch funktioniert fängst Du an Dein eigenes Projekt auf diesem aufzubauen.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.