So... Here is where I am at with the timestamp thing: On PCs / rust std: `timeInstant::now()` to get a timestamp. You can then subtract these to get a core::Duration, and call `.as_millis()` etc on Duration. On Stm32: `timer.elapsed()` to get a custom Instant that stores a ns timestamp since timer start internally. You can then call `.as_millis()` etc directly on this, or subtract to get a `core::Duration`> This is inconsistent, but the direct analog to PC is store the `Timer` as the timestamp, then call `.elapsed()` on it to get a Duration, which doesn't make sense semantically. (And remove the custom Instant type)