![]() |
发表于 2024-11-28 15:33
|
会飞的鱼KKK 发表于 2024-11-28 11:21 哈哈哈,小白一个,老师上课都没讲什么直接就让我们写了 ![]() |
在第一个if里面加延时,保证按一次按键只执行第一个一次if |
按按键的时间和HAL_Delay(150),最好延时时间大于按键时间,让按一次只进入一次A11接地判定,还有A10一般做串口用,点灯有点大材小用了 |
本帖最后由 zpwgf 于 2024-11-28 10:21 编辑 HAL_GPIO_TogglePin使用这个函数就方便撒。比如: if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11) == 0) { HAL_Delay(10); if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11) == 0) { HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_10); } } 没错的话应该这样也可以。当然,这样不松手的话理论上会一直来回跳 |
判断按键里面加个延时再判断一次就实现你的功能了,你目前的程序因为没有延时,单片机跑太快按键可能会乱变灯 |
有问题 没消抖 没松手检测 |
tianxiazone 发表于 2024-11-26 21:44 就是我这个按键接的地,所以按下去读取的应该是0,所以用的reset,这个中断是什么意思啊,请教一下,我们老师上可就讲了这几个函数》 |
第100行 写错了吧 ,这个逻辑有有点问题, 按键可以用中断 |
|