La respuesta corta es: ¡necesitas usar el temporizador en el modo de captura de entrada!
Luego, Timer_Pin puede configurarse para un disparador de interrupción externo, es decir, cuando se produce una interrupción externa, se produce una captura de tiempo de entrada (~ marca de tiempo). De manera similar, otra captura ocurre en la siguiente interrupción, solo necesita encontrar la diferencia entre las dos capturas para calcular el tiempo transcurrido entre dos eventos. ¡Pero hay que tener cuidado al configurar el temporizador para que pueda capturar al menos dos interrupciones consecutivas!
Para explicar las cosas con más detalle, asumo que estás usando STM32CubeMx para generar el código, ¡incluso si no estás siguiendo los pasos similares!
-
Debe configurar un temporizador en "Modo directo de captura de entrada", que le asigna un pin GPIO. ¡Ahora, puede usar esto para la interrupción de su sensor!
-
Configure el temporizador para que pueda capturar un mínimo de dos capturas de TIM consecutivas.
El cálculo es simple y sigue como sigue:
La frecuencia mínima que mides es
MinPulseFrequency = (2*TIMxPeripheralFrequency)/((Period+1)(Prescaler+1))
-
Repase los ejemplos de STM32Cube y busque el ejemplo TIM / Timer_Input_Capture. Se ha explicado bastante bien.
-
Incluso si no quiere ver todos los detalles sobre cómo funcionan todos los modos del temporizador, ¡asegúrese de entender lo que está sucediendo en el modo de captura de entrada! y vea cómo puede configurarse correctamente usando este Libro de cocina de uso general con temporizador.
Para un problema similar en un contexto diferente, pero que funciona como un código de ejemplo para usted será esta publicación.