前言
空窗了一年,重头再来点个灯吧,本篇文章将主要给大家讲解按键点灯
一、原理图设计
LED0-LED2 --------> PA0-PA2引脚
KEY1 ---------> PA3引脚
二、CubeMX的设置
LED选择GPIO一次将PA0、PA1、PA2设置为GPIO_Output,输出电平为低电平Low
key1选择GPIO将PA3设置为GPIO_Input,引脚设置为上拉Pull-up
三、代码调试
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 */
}