А что делать собираемся? Как будет использоваться этот 32-разрядный
счётчик? Но один из рабочих рецептов такой: uint16_t hw_timer(void)
{
return TIMER_REG;
}
uint32_t sw_timer(void)
{
static uint32_t tim32;
static uint16_t prev;
uint16_t now = hw_timer();
tim32 += (uint16_t)(now - prev);
prev = now;
return tim32;
}
Если вызывать sw_timer() чаще периодичности аппаратного таймера, он будет давать 32-разрядные значения без потерь.