Dokumentation/Referenz zu C-Funktionen finden

Gast #5387004
Lesenswert?
• ▲
▼
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!
#5387111
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.