STM32 gotchas
8. Timer does not work if ARR=0

That timer does not run when TIMx_ARR=0 is a well-documented feature. Nevertheless, it occasionally happens that users set ARR to 0 (sometimes just by leaving the respective field in the "libraries"' init struct at its default zeroed vale) to find in surprise that it is not running.

Not setting ARR at all won't result in this, as ARR is initialized to all-ones (i.e. 0xFFFF for the 16-bit timers, 0xFFFF'FFFF for the 32-bit timers).