Hallo Bert,
Das Problem ist der Prescaler. Verständlicherweiße nimmt man an, dass
der Prescaler ein Teiler ist. Also (CLK_FRQ) / (PSC) = (TIM_CNT_FRQ),
dass ist aber falsch.
Der Prescaler ist ein Zähler, der sich sobald er den PSC-Wert erreicht
auf 0 zurücksetzt und den eigentlichen Counter erhöht. Dementsprechend
sind es von 0 bis 0, 9 Zählschritte bei einem PSC von 8 (0, 1, 2, 3, 4,
5, 6, 7, 8, 0).
Um einen Teiler von 8 zu erhalten musst du den PSC auf 7 stellen.
In deinem Fall is der PSC 8 was bei einer Timerfrequenz von 8Mhz eine
Zählfrquenz von 0.8889 Mhz ergibt. 900 Zählschritte entsprechen dann
1us/0.8889 * 900 = 1.0125 ms -> 0.9877 KHz.
Das kommt schon sehr nah an das gemessene ran. Wenn du die interne Clock
des stm verwendest würde ich darauf tippen das daher die restliche
Abweichung kommt.