Quiero iniciar y detener temporizadores desde el estado del botón. Estoy usando un STM32F407VG.
Este es el circuito que diseñé:
Al pulsar el botón hay 0,45 V. Cuando suelte el botón habrá 4,99 V.
Este es el bloque de código que he escrito para lograr mi objetivo:
uint8_t buttonState=0;
uint8_t oldState=0;
buttonState=HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10);
if(oldState==0 && buttonState==1)
{
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); // TIM1_CH3 start
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); // TIM1_CH4 start
oldState=1;
}
else if(oldState==1 && buttonState==0)
{
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_3); // TIM1_CH3 stop
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_4); // TIM1_CH4 stop
oldState=0;
}
Quiero iniciar y detener los temporizadores desde el estado del botón. Primero leo el estado del botón. Quiero iniciar los temporizadores sólo cuando se pulsa el botón (como en la primera imagen.) Cuando suelto el botón (como en la segunda imagen,) Quiero que los temporizadores se detengan.
Cuando depuro el proyecto, el código nunca entra en la carpeta else if
declaración. PWM siempre funciona y nunca se detiene.
¿Hay algún problema en mi circuito o en el software?