Как-то так, наверное: Функцию UpdateTimer64() вызывать только из фоновой задачи, например. Не реже, чем период 32-разрядного таймера.
UPD: хотя нет, прерывания там тоже будут чудить. Надо что-то ещё навертеть.
static uint64_t timer64;
static uint32_t cnt_old;
uint64_t GetTimer64(void)
{
return timer64 + (GetTimer() - cnt_old);
}
void UpdateTimer64(void)
{
uint32_t now = GetTimer();
timer64 += now - cnt_old;
cnt_old = now;
}