目录
一、独立按键使用
1.防抖设计
最简单的防抖设计就是延迟,不过会产生一些问题,不建议这么做,优化办法在后面文章里会加入,此次实验还是利用延迟消抖。
二、相关HAL库的配置
时钟配置方面不再重复,同上篇文章,后期有更新再加入。
补充一下关于调试的配置,根据自己的配置来选择。建议选择双线模式,节省引脚。
1.模式选择
由图可知,应该配置为输入上拉模式,IO口检测是否为低电平来判断按键是否按下。
2.HAL库的配置
三、代码编写
注意:一定要在用户编码区编写,否则再次生成代码时会被覆盖。
if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==0)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==0)
{
while(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin) == 0);
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
}
不用延迟的方法,欢迎交流和指正:
static unsigned char log=0;
switch(log)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==0)log=1;
}break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==0)
{
log=2;HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
else log=0;
}break;
case 2:
{
if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==1)log=0;
}break;
}