在用STM32CUBEMX做按键实验的时候发现了一个有趣的地方和大家分享一下,代码如下可以看到KEY2和KEY3都是控制PB.5电平的翻转,但一个while放在了翻转的前面,一个放在了翻转的后面。区别长按的时候,一个是按下的那一刻就翻转,一个是松开的那一刻才翻转。而且需要注意while函数后面的;都不能去掉,keil可能会提示警告,假如把;去掉的话led会快速的闪烁,就不能达到想要的翻转的效果了。
void Scan_Keys()
{
if(KEY2 == 0)
{
HAL_Delay(5);
if(KEY2 == 0)
{
while(KEY2 == 0);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
}
}
if(KEY3 == 0)
{
HAL_Delay(5);
if(KEY3 == 0)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
while(KEY3 == 0);
}
}
}