У Atmel ов входная схема счетчиков тактировалась от системного таймера, поэтому входной сигнал должен был быть более чем в 2 раза ее меньше. Как бы ни оказалось такой засады и у STM. Идея сея мне слабо понятна ( казалось бы, достаточно тактировать выходы счетчика), но - тем не менее.
Все просто. У АВР-ок счетчики таймера считают по CLK_I/O. Если назначить счет от внешнего вывода, то сигнал с него идет через схему привязки к CLK_I/O, вероятно для того, чтобы CPU не пытался получить данные с таймера в момент, когда они изменяются от пришедшего счетного импульса. И эта привязка устроена так, что при F_in >= 0.5 * F_CLK_I/O, она перестает работать. У STM32 это решили по-другому, счетчик таймера считает асинхронно, а синхронизируют его как-то на выходах.
Скорее всего, у первых АВР-ок просто не получилось сделать синхронизацию на выходах, не лезло оно в те технологии, а далее сложился стандарт...