【问题标题】:Sending data via USB by pressing button only once只需按一次按钮即可通过 USB 发送数据
【发布时间】:2019-02-14 18:03:27
【问题描述】:

我是 STM32 的新手,但是我想创建一个简单的项目,允许我使用 2 个按钮通过 USB 发送数据 - 按下按钮时只有一次。目前,如果我按住按钮,它将继续发送数据。想要“打破”if,但没有帮助。

while (1){
  if (HAL_GPIO_ReadPin(Button_GPIO_Port,Button_Pin)== GPIO_PIN_RESET){
      HAL_Delay(150);
      if (HAL_GPIO_ReadPin(Button_GPIO_Port,Button_Pin) == GPIO_PIN_RESET){
          ++MessageCounter1;
          MessageLength1 = sprintf(DataToSend, "Wiadomosc BUTTON 1 nr %d\n\r", MessageCounter1);
          CDC_Transmit_HS(DataToSend, MessageLength1);
      }
  }
  if (HAL_GPIO_ReadPin(Button2_GPIO_Port,Button2_Pin)== GPIO_PIN_RESET){
      HAL_Delay(150);
      if (HAL_GPIO_ReadPin(Button2_GPIO_Port,Button2_Pin) == GPIO_PIN_RESET{
          ++MessageCounter2;
          MessageLength2 = sprintf(DataToSend, "Wiadomosc BUTTON 2 nr %d\n\r", MessageCounter2);
          CDC_Transmit_HS(DataToSend, MessageLength2);
      }
  }

【问题讨论】:

    标签: c++ stm32


    【解决方案1】:

    现在您正在等待脉冲的下降沿,表示按下按钮并使用延迟对其进行去抖动。没关系。

    但是,您还必须检查释放按钮时在该引脚上产生的脉冲上升沿。为此目的添加一个布尔变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2021-08-19
      • 2022-12-03
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多