【嵌入式】 学习--长按按键 步骤简单详细

文章描述了一个在STM32微控制器中使用GPIO进行按键读取和处理的过程。在GPIO模块中定义了KEY_Read函数,通过HAL库检测GPIO引脚状态,实现按键的消抖处理。当检测到特定按键被按下时,该函数会返回相应的键值。在主函数中调用KEY_Proc函数,根据键值更新LCD显示屏上的显示内容。
摘要由CSDN通过智能技术生成

在GPIO.H里声明KEY_Read函数:

 

uint8_t KEY_Read(void);           /*按键读取*/

在GPIO.C里编写KEY_Read函数:

 

/* USER CODE BEGIN 2 */
uint8_t KEY_Read(void)  /*按键读取*/
{
	uint8_t ucKey_Val=0;
	
	if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0 )
	{
		HAL_Delay (10);                       /*延迟10ms消抖*/
		if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0 )
			ucKey_Val=1;		                    /*赋值键值1*/		
	}
	if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0 )
	{
		HAL_Delay (10);                       /*延迟10ms消抖*/
		if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0 )
			ucKey_Val=2;			                    /*赋值键值2*/	
	}
	if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0 )
	{
		HAL_Delay (10);                       /*延迟10ms消抖*/
		if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0 )
			ucKey_Val=3;		                    /*赋值键值3*/		
	}
	if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0 )
	{
		HAL_Delay (10);                       /*延迟10ms消抖*/
		if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0 )
			ucKey_Val=4;		                    /*赋值键值4*/
	}
	return ucKey_Val;                     /*返回键值*/
}

在main.c:

1.在主函数前声明 KEY_Proc()按键处理函数;

void KEY_Proc(void );          /*按键处理*/

2.在while循环里声明 KEY_Proc()按键处理函数;

KEY_Proc( ); 

 3.在void SystemClock_Config(void)函数后边编写KEY_Proc()按键处理函数。

void KEY_Proc(void)
{
  uint8_t ucKey_Val=0;
	
	ucKey_Val=KEY_Read();
	char text1[30];
	
	switch(ucKey_Val)
	{
		case 1:
		sprintf(text1,"ccpig   ");
		LCD_DisplayStringLine(Line8, (uint8_t *)text1);
		break;
		case 2:
		sprintf(text1,"jjLOVEcc");
		LCD_DisplayStringLine(Line8, (uint8_t *)text1);
		break;
		case 3:
		sprintf(text1,"cc      ");
		LCD_DisplayStringLine(Line8, (uint8_t *)text1);
		break;
		case 4:
		sprintf(text1,"jj      ");
		LCD_DisplayStringLine(Line8, (uint8_t *)text1);
		break;
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值