Millisecond Timer Inaccuracy


Has anyone else tried running the “GPIO” sample (BareMetal) project? The LED blink intervals are supposed to be 125, 250 and 500 milliseconds but they are not.

When I run the unmodified sample code and connect an oscilloscope I see that each interval is actually about 50% longer, i.e. 250 ms is actually 375 ms, 500 is actually 750 ms, etc.

I’ve seen the note in the Gpt_LaunchTimerMs function saying the accuracy ultimately depends on the clock source, but 50% is a big error.