Quiero conectar el sensor de color TCS3200 con STM32f746ZG. Dado que el TCS3200 genera una frecuencia basada en la cantidad de luz recibida, necesito alguna forma de contar el número de pulsos de diferentes colores para determinar un color.
En CubeMX, configuro PF6 (s0) PF7 (s1) PF8 (s2) PF9 (s3) y captura de entrada TIM2 ch1 como (fuera) del sensor. Frecuencia para el temporizador 2, seleccioné ser 84MHz con prescalar 83 que lo llevará a 1MHz (no estoy seguro si debo hacer esto o no). También habilité la interrupción global TIM2 en la ventana nvic. Luego, activé el TIM6 para medir el tiempo de 5 s (temporizador f = 84MHz, prescalar = 41999 y contrapaso = 9999).
Tengo dudas sobre cómo usar estos dos temporizadores dentro del bucle while, qué funciones de la biblioteca HAL usar aquí y cómo usarlo.
CubeMX es el generador de código fuente y el IDE es Kiel5. La siguiente es mi configuración para la escala de frecuencia de salida y el tipo de filtro fuera de la función principal. Si estoy equivocado, corríjame.
void TCSFREQ()
{
HAL_GPIO_WritePin(GPIOF, s0_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF, s1_Pin,GPIO_PIN_RESET);
}
void TCSRED()
{
HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_RESET);
}
void TCSBLUE()
{
HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_SET);
}
void GREEN()
{
HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_SET);
}
void TCSCLEAR()
{
HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_RESET);
}
Corrígeme si hay algo mal arriba.
Como soy nuevo para los microcontroladores, estoy teniendo problemas para contar el número de pulsos en un período de tiempo (digamos 5s). Sería bueno si me ayudara con mi problema o sugiera alguna solución alternativa.
¿Cómo cuento el número de pulsos de la salida de ese sensor?