stm32_timer_calc_value was using uint32_t for the overflow counter, ultimately causing timestamps to wrap as uint32_t.