Частотомер на микроконтроллере stm32
Статья описывает способ измерения какой-либо внешней частоты с помощью микроконтроллера stm32, а заодно демонстрирует некоторые возможности таймеров. Если вы плохо знакомы с таймерами, то рекомендую прочесть это.
Максимальная измеряемая частота зависит от того, на какой частоте работает сам микроконтроллер. Например, если использовать популярную плату BluePill работающую на 72МГц, то можно измерить частоту около 190МГц. То есть, максимальная измеряемая частота не должна превышать частоту тактирования микроконтроллера более чем в два с половиной раза. Ниже будет пояснение с чем связанно это ограничение.
Стоит уточнить, что измеряемая частота должна быть постоянная.
Вначале небольшоё объяснение как всё работает: будут задействованы три таймера. Таймер №1 будет отмерять интервал времени равный одной секунде. Таймер №2 будет тактироваться от измеряемой частоты через ETR-пин, и тем самым его счётчик (CNT, в Кубе он называется Counter Period) будет выступать в роли счётчика импульсов. Поскольку таймеры у stm32 16-ти битные, то таймер №2 сможет насчитать не более 65535 импульсов, то есть можно измерить частоту не более 65.535 КГц. Чтобы преодолеть этот барьер нужно использовать таймер №3, который будет отсчитывать количество переполнений таймера №2. То есть, тамеры №2 и №3 будут работать каскадно, как один 32-х битный таймер.
Продолжение https://istarik.ru/blog/stm32/124.html