Так устроен язык Си. Перед арифметическими операциями всё
приводится к int. Или к более старшим типам, по ситуации.
Называется "integer promotion". https://caxapa.ru/837657.html
Можно вот так:
if ((unsigned short)(TIM2->CNT - t->t0) >= t->pt)
или так:
if (((TIM2->CNT - t->t0) & 0xFFFF) >= t->pt )