如果已经按下按钮,我试图阻止用户按下按钮1秒钟。可以在不使用main.c中的superloop的情况下完成吗? 我的EXTI0在stm32f4xx_it。
void EXTI0_IRQHandler(void)
{
/* USER CODE BEGIN EXTI0_IRQn 0 */
if (HAL_GPIO_ReadPin (GPIOA,GPIO_PIN_0))
{
HAL_GPIO_WritePin (GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
TIM1_TRG_COM_TIM11_IRQHandler();
HAL_GPIO_WritePin (GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin (GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
}
/* USER CODE END EXTI0_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* USER CODE BEGIN EXTI0_IRQn 1 */
/* USER CODE END EXTI0_IRQn 1 */
}
答案 0 :(得分:0)
如果用户按下按钮,您可以获得系统时间并将其保存在变量中。如果用户再次按下,您可以检查是否已经过了足够的时间。这个例子只是为了展示机制,只是解决问题的一种可能性。
int nLastPress = 0;
void EXTI0_IRQHandler(void)
{
if(nLastPress + 1 < SYSTEM_TIME_IN_SECONDS)
{
// do your stuff
nLastPress = SYSTEM_TIME_IN_SECONDS;
}
else
{
// don't handle user input
}
}