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.