Уже несколько дней прохожу подобные замеры STM в качество частотомера /пока на STM32/. В STM32CubeIDE

.
Пластиковый бредборд, длинные провода

. На реальной плате должно быть лучше.
STM32F103C8T6, вход: TIM1_ETR (TIM1 - 16 бит):
- HSE 8 x 9 = 72 MHz, Fmax = 34 MHz
- HSE, 8 x 9 = 72 MHz, TIM_CLOCKPRESCALER_DIV2, Fmax = 71 MHz
- overclock HSE, 8 x 16 = 128 MHz, Fmax = 62 MHz
- overclock HSE, 8 x 16 = 128 MHz, TIM_CLOCKPRESCALER_DIV2, Fmax = 156 MHz
С другими МК попробовал вход по TIM2_ETR (TIM2 - 32-бит), и код стал простой: ни переносы переполнения ест, ни доп. прерывания, шаг 1 Hz и т. д.
напр. с дешевым STM32F031F6P6:
- HSE, 8 x 6 = 48 MHz, Fmax = 22 MHz
- HSE, 8 x 6 = 48 MHz, TIM_CLOCKPRESCALER_DIV8, Fmax = 136 MHz
STM32F411CEU6
HSE, 25 x 4 = 100 MHz, Fmax = 48 MHz
HSE, 25 x 4 = 100 MHz, TIM_CLOCKPRESCALER_DIV2, Fmax = 96 MHz
Без делителя в ETR макс. входная частота должна быть Fclock/3 (а е реале чуть больше: напр. до Fclock/2.1). С делителем в ETR будет по коэффициентом деления и как получиться (паразитными емкостями и свойствами кристалла). Но до 90..180 MHz получается вполне ожидаемо. (Шаг изменения входа становится равным коэффициенту деления). Результаты мне нравится и можно использовать в других устройствах (с внимание, что PLL вносит доп. jitter). STM32/GD/.. найдет место в р/л конструкциях

. Спасибо за тему.
ниже: STM32F031F6P6, 1 - вход из Si5351A (калиброванный выход), 2 и 3: показания (по калибровочному float коэффициенту Fреал/Fизм, сделан на 10000000 Hz)

,

,
Частота слегка "убегает" вверх (простой кварц HC-49S), при необходимости "исправим" с TCXO/OCXO

.