Du musst an der Stelle zwischen Unit und Integrationtests unterscheiden.
Das was du schon testen willst, ist die Integration von Code und Hardware.

Unittest sind wesentlich einfacher als Integrationstest. Da verifiziert man nur: Ich gebe in Methode A Daten X rein und erwarte dabei Daten Y als Ausgabe.
Dazu wie man Gesamtfunktionalität testet gibt es unterschiedliche Herangehensweisen. Den goldenen Weg gibt es dabei aber nicht.
Von stückchenweise Funktion sicherstellen wie du das machst, bis hin zu ein komplettes Testsystem entwickeln, dass die Ein und Ausgänge überprüft gibt es viele Möglichkeiten.
Da muss man schauen was für einen pragmatisch ist. Wenn es ein professionelles Projekt ist, hat man hoffentlich im Vorfeld bestimmte Tests definiert die erfüllt werden müssen.

Wenn man wirklich auf Nummer sicher gehen will, kommt man nicht darum komplett die erwarteten Ausgaben auf vor definierte Eingaben zu überprüfen von extern und eventuell auch intern nachzuvollziehen (Bei Space Projekten z.B. bis auf Signallaufbahn-Ebene)

Ich würde in deinem Fall einzelne Komponenten entwickeln (z.B. die Clock Einstellung oder der Timer) diese Testen und in einem funktionsfähigen Zustand in das eigentliche Projekt einpflegen. Das ist ein Kompromis was Aufwand und Testaussagekraft angeht.