Forum: Mikrocontroller und Digitale Elektronik Dokumentation/Referenz zu C-Funktionen finden


von Fliggenteppich (Gast)


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!

von Jan B. (do9jhb)


Lesenswert?

In der Referenz zur AVR-libc gibt's die Doku zu allen C Funktionen: 
http://nongnu.org/avr-libc/user-manual/modules.html

von Fliggenteppich (Gast)


Lesenswert?

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.

von Teo D. (teoderix)


Lesenswert?

Meist ist sowas direkt in den .h u. .c Files dokumentiert!?

von Fliggenteppich (Gast)


Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?


von Bernd K. (prof7bit)


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.

: 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
Noch kein Account? Hier anmelden.