请问为什么这个函数无法实现按键对应灯亮其他全灭的功能?

想实现用灯提示选中的功能,即同一时间只能有一个灯是亮的,但是烧录运行的情况是第一次按哪个键哪个灯就亮,后面怎么按都不会有变化。

img

img

img

感觉你key_scan函数陷入死循环了

key2scan 和key3scan呢

有硬件条件的话就DEBUG一下

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0) // 为零时才进入
{
Delay_ms(10);
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==1) // 上面都为零了,这句能实现吗?
{
Delay_ms(10);
keynum = 1;
}

另,应该是 应该是这样吧

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==1) // 为1时才进入
{
Delay_ms(10);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==1) // 如果为还为1,即不是按钮抖动
{
Delay_ms(10);
keynum = 1;
}

另,网上有开发板的教程,一堆一堆。