STM32cubemx 按键检测和扫描按键

STM32cubemx 按键检测和扫描按键

stm32cubemx工程和keil工程
提取码:h57s

使用的是stm32_h750

#define KEY_SCAN//选择功能
#ifdef 		KEY_SCAN
		i=Scan_key_A();
#else
		i=Scan_key_B();
#endif
		switch(i)
		{
		....//按键按下对应的功能
		}

uint8_t Scan_key_A()   //
{
	uint8_t keystate=0;
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==KEY_ON)
	{
		while (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==KEY_ON);
		keystate=1;
		return keystate;
	}
		if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==KEY_ON)
		{
			while (HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==KEY_ON);
			keystate=2;
			return keystate;
		}			
return 0;		
}

uint8_t Scan_key_B()//扫描按键 可以两个按键都按下
{
uint8_t keystate=0;
uint8_t keystate_B=0;
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==KEY_ON)
	{
			keystate=1;
	}
		if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==KEY_ON)
		{
			keystate_B=1;
		}	
		keystate=keystate*2+keystate_B;			
return keystate;		
}

想要实现长按,短按,可以使用状态机,使用定时器,去计时,实现长按,短按功能。

GPIO写函数

HAL_GPIO_WritePin(GPIOG,GPIO_PIN_3,GPIO_PIN_RESET);

GPIO读函数

HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_0);

GPIO翻转函数

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);

延时函数ms

HAL_Delay(100);

MY_QuinTA的笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值