STM32按键控制LED灯-HAL库

前言

空窗了一年,重头再来点个灯吧,本篇文章将主要给大家讲解按键点灯

一、原理图设计

LED0-LED2 --------> PA0-PA2引脚

KEY1 ---------> PA3引脚

STM32按键控制LED灯-HAL库_第1张图片

二、CubeMX的设置

LED选择GPIO一次将PA0、PA1、PA2设置为GPIO_Output,输出电平为低电平Low
key1选择GPIO将PA3设置为GPIO_Input,引脚设置为上拉Pull-up

STM32按键控制LED灯-HAL库_第2张图片

 三、代码调试

main.c

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint8_t Key_val = 0; //定义全局变量,用来存键盘的返回值

uint8_t Key_scan(void)
{
	uint8_t key_val = 0; //定义返回值变量
	/*读取引脚角度状态*/
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_3) == 0 ) //当按键按下时,电平为0
	{
		HAL_Delay(10);//消抖
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_3) == 0 ) //检测按键松手情况
		{
			key_val =1;
		}
	}
	return key_val;
}
/* USER CODE END 0 */
while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		Key_val = Key_scan(); //不断读取建码值,放在定义的全局变量Key_val里
		if(Key_val == 1)
		{
			HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);  //高电平 亮
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
		}
		else
		{
			HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET); //低电平 灭
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
		}
  }
  /* USER CODE END 3 */
}

你可能感兴趣的:(stm32,嵌入式硬件,单片机)