Mein Satz - Static soll doch eigentlich die Unveränderbarkeit garantieren -
ist natürlich schmarn gewesen. Habe static mit const verwechselt - pfeifel

Danke an Sigint - gute Info:

Auch vor Funktionen kann das Schlüsselwort static stehen. in diesen Fall bedeutet dieses, dass die Funktion nur im Rahmen der Datei, in welcher die Funktion steht, genutzt werden kann.

Aha - das ist so zu verstehen, wie die private Definition bei bei C++, eben bezogen auf eine c-Datei.

Zu meiner Frage:

static volatile uint16_t irq_count = 0;

das static ist also Quatsch - wenn die Deklaration außerhalb einer Funktion - also global definiert wird. Macht nur Sinn innerhalb einer Funktion.
Oder bringt das irgendwelche Vorteil im uC-Bereich?

Innerhalb einer Funktion wäre static richtig, sozusagen als permanenter Funktionsspeicher mit Inhaltsbehalt, aber dann ist die Variable außerhalb ja nicht bekannt, daran ändert auch das volatile nichts!

Habe ich das richtig verstanden?

Gruß
Stefan