Im Datenblatt steht im Kapitel "Nested vectored interrupt controller
(NVIC)" nur die Anzahl. Die genaue Verwendung (ist bei jedem Chip
anders) steht im passenden Reference Manual. Dabei muss man genau
aufpassen, welches Manual zu welchem Chip gehört, die Zuordnung ist
nicht 1:1. Welches RMxxxx gilt steht ganz am Anfang im Datenblatt. NVIC
ist ein guter Suchbegriff zu dem Thema.
Ich hatte mir mal gemerkt:
1 | Der F051 nutzt 32 Interrupts, dazu kommen die 16 Exceptions, die Tabelle
|
2 | braucht also (32+16)*4 = 192 Byte. Das muss für alle M0 und M0+ Chips
|
3 | reichen, weil die wohl max. 32 Interrupts können (begrenzt durch die Zahl
|
4 | der NVIC_IPR Register).
|
5 | Der M0+ hat optional ein VTOR, die Vector Table muss 256-Byte-aligned sein.
|
6 | Der M3 und der M4 können 240 Interrupts (der F205 nutzt 81), die Vector
|
7 | Table muss also 512- oder 1024-Byte aligned sein.
|
8 | Laut ARMv7-M Architecture Reference Manual können die (und die ganz großen
|
9 | sowieso) sogar 496 Interrupts und brauchen dann ein 2048-Byte Alignment.
|
So gesehen sollte man die unteren 2K nicht missbrauchen. Man kann aber
zur Laufzeit eine andere Tabelle irgendwo im Flash benutzen (per VTOR
Register; nicht beim M0). Dann reicht es, am Anfang nur 64 Byte oder
noch weniger zu reservieren. Im Extremfall reichen die 4 Byte für den
Reset-Vektor. Man kann den Stack Pointer ja auch selbst initialisieren.