stm8一个按键执行延时程序时 另一个按键不能 *** 作(程序卡在延时这里,延时可以执行,完成后均正常 *** 作)

stm8一个按键执行延时程序时 另一个按键不能 *** 作(程序卡在延时这里,延时可以执行,完成后均正常 *** 作),第1张

如果按键扫描用的是 检测到 *** 作就延时一段时间再确认的方法,当然卡在延时里了。

可以改为:给每个按键分配一个静态变量T[i],每隔比如10ms读一次状态,如果有按下T[i] ++松开清零。当T[i] >比如5 则确认为按下(注意长按)。这样同时 *** 作多个按键也不会卡,芯片可以去做别的事情。

首先,按键的硬件电路,按键不按的时候常高或者常低,按钮按下产生1个跳变,下降沿或者上升沿。

然后,软件部分,将这个IO口配置为输入模式,带中断功能,再然后编写中断事件即可,比如让一个LED灯亮,或者串口输出。

有问题可以用ST-LINK连接看看,Debug可以单步运行查看进度的,比51的年代强太多了

简单的啊。思路:8个LED接在一个口,如P1口。再将另外两个LED接在另外某个口(如P2)的两个引脚。然后将两个按键分别接在空闲的口的两个引脚。

按下一个按键,使8个LED的输出状态变化,0xFE循环移位实现,LED低电平亮。另外的按键按下,两个LED状态翻转。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11275358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存