Спасибо, период таймера стал ближе к ожидаемому. Смысл был в том, чтобы немедленно применились новые значения PSC, ARR и начать новый период с нулевых теневых счётчиков (с которыми сравниваются теневые аналоги PSC и ARR). Для гарантии, что задержка не станет меньше даже на децел (доли микросекунды). Может так:
TIM3-CR1=TIM_CR1_URS; //остановить таймер, запретить прерывание при копировании в теневые регистры
TIM3->EGR=TIM_EGR_UG; //копировать в теневые регистры содержимое PSC и ARR, обнулить теневые регистры делителей частоты
TIM3->SR=0; //очистить флаг прерывания, если всё таки взвёлся