计时器和按钮接口 stm32

Timers and push button interface stm32

如何开发一个程序,当我们按下按钮时,计时器应该启动,如果按下按钮超过 5 秒,消息应该通过 UART 传输,如果计时器低于 5 秒,则应该会出现错误消息。

我需要有关如何在 stm 中连接按钮和计时器的帮助。

无论您使用何种框架,您都可以实施此检测按钮按下和释放的算法。 为此,您需要在上升沿和下降沿都启用 EXTI。 EXTI 处理程序看起来像:

  EXTI_Handler ()
  {
    /* resolve button status according GPIO value transition */
    if (button_pushed)
      {
        start_timer ().
      }
    else if (button_released)
      {
        local_seconds_count = get_timer_count_in_seconds ();
        if (local_seconds_count > 5)
          {
            /* 5s have elapsed */
            send_uart (OK_MSG);
          } 
        else
          {
            send_uart (ERR_MSG);
          }
        /* stop timer */
        stop_timer ();
      }
  }

其他想法可能基于 SysTick 计时器和 HAL_GetTicks:只需使用一个全局变量来存储按钮按下瞬间并在释放时比较+清除它。

您可以在 visualgdb site 中找到有关 STM32 定时器的精彩教程。 对于 EXTI,请参考 this page.