STM32BUG--按键检测,while后分号

认真警告,拒绝眼瞎

while结尾不加分号,造成返回值出现问题,按键按下反应出现问题
按键按下后,灯不发生反转,需要加个延时

while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) ;;;;;;;;;;;;;;;;分号

uint8_t KEY_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
{
	while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON); //while结尾处分号
		return KEY_ON;	
}
else 
{
	return KEY_OFF;
}

}

在这里我们定义了一个 Key_Scan 函数用于扫描按键状态。 GPIO 引脚的输入电平可通
过 读 取 IDR 寄 存 器 对 应 的 数 据 位 来 感 知 , 而 STM32 标 准 库 提 供 了 库 函 数
GPIO_ReadInputDataBit 来获取位状态,该函数输入 GPIO 端口及引脚号,函数返回该引脚
的电平状态,高电平返回 1,低电平返回 0。 Key_Scan 函数中以 GPIO_ReadInputDataBit 的
返回值与自定义的宏“KEY_ON”对比,若检测到按键按下,则使用 while循环持续检测按
键状态,直到按键释放,按键释放后 Key_Scan 函数返回一个“KEY_ON”值;若没有检测
到按键按下,则函数直接返回“KEY_OFF”。若按键的硬件没有做消抖处理,需要在这个
Key_Scan 函数中做软件滤波,防止波纹抖动引起误触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值