Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 只需按一次按钮即可通过USB发送数据_C++_Stm32 - Fatal编程技术网

C++ 只需按一次按钮即可通过USB发送数据

C++ 只需按一次按钮即可通过USB发送数据,c++,stm32,C++,Stm32,我是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) ==

我是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);
      }
  }

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

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