Dokumentation/Referenz zu C-Funktionen finden

Gast #5387004
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!
Gast #5387027
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.
#5387111
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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.