Die Frage wirkt auf Leute mit gepflegtem Halbwissen etwas
philosophisch. Philosophen suchen aber nach Erkenntnissen,
die der Menschheit bisher nicht klar sind.
Bei Prozessoren und dem Programmaufbau, der sie zum Laufen
bringt, ist den Bibliotheks-Erstellern aber schon klar, was
sie da mit Funktionsaufrufen und eingelagerten Unterprogramm-
aufrufen fabriziert haben.
Sauber programmierten Bibliotheksfunktionen, wie CAN_BAUDRATE()
ist es daher wurscht, ob sie sich gerade 3, oder 11 Ebenen
unterhalb der Ebene der main() Funktion befinden, wenn sie
vielleicht - oder mal nicht - eine weitere Unterfunktion
aufrufen, um direkt auf die Hardware-Register des µC, oder
Prozessors zugreifen.
Hauptsache der Stack ist groß genug, um wieder zum Befehl
nach ihrem Aufruf zurückzufinden...
Das gilt auch für rekursive Algorithmen. Trotz Abstieg in
immer tiefere Ebenen kommen die normalerweise der
Hardware-Ebene keinen Deut näher.
Interrupt-Handler sind OFT dicht an der Hardware des µC
angesiedelt, um schnell auf Zeit- oder Signalereignisse zu
reagieren. - Das MUSS aber nicht sein.
Außerdem "wühlen" sie sich nicht auf die hardware-nächste
Ebene hinunter, sonder unterbrechen den normalen Programmablauf,
um ungestört (eventuell hardware-nahe) Operationen auszuführen.