描述:

GPIO输入检测函数
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin);

  • GPIOx: GPIO端口,GPIOA~GPIOH
  • GPIO_Pin: 该端口对应的Pin脚数
示例:

根据使用的外设,关闭未使用外设的初始化

 /* Initialize all configured peripherals */
 MX_GPIO_Init(); //开启GPIO初始化函数
// MX_I2C1_Init();
// MX_USART1_UART_Init();
// MX_USART2_UART_Init();
// MX_USB_DEVICE_Init();
// MX_ADC_Init();
// MX_TIM2_Init();
// MX_SPI1_Init();

编辑主程序,检测按键对应引脚,当按下一次,LED变一次状态。KEY按键对应IO是下拉输入的,当按键按下时电平为高,所以判断按键对应IO为SET时为按下状态。

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
  if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == SET) //按下按键
  {
    HAL_Delay(20); //按键延时消抖
    if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == SET) //按键仍在按下状态
    {
      HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); //翻转IO
      while(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == SET) //等待松开按键
      {
      }
    }
  }
  /* USER CODE END WHILE */
? /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

以上示例针对eefrog的STM32F042G模块,根据STM32cubeMX综合配置基础上设计,不保证在其它模块上有同样效果。