程序中按键怎么写,连开三贴了,谢谢老师们的指点,我愚笨 ,还是没有想清楚 。所以决定把问题问的详细点 ,然后暂时成为我的套路 。求老师们可以上传些成功历程,或是详细指点一下 ,那么 ,问题来了 :
情景: 如果我程序中要做的事情很多 ,按键处理只是其中部分功能 ,那么
1 扫描IO口的方法好 ,还是外部中断中断的方式好 ?
2 如果是用定时器扫描IO口的话 ,这部分代码写在哪里 ?
3如果程序裸奔的话 ,怎么把按键按下这一事件告知按下按键想要触发的那个事件?
4如果还有松手检测,松手检测怎么写?
5想写一个长时间,比如按下3秒才认为按下,怎么写 ,同样长按下怎么告知想要触发的那个事件?
6同一按键怎么区分长时间按下和短时间按下 ?
7如果写组合键 ,思路套路又是怎样 ?
工作多年 ,水平薄浅 。别笑我 ,求赐教!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果任务较多,个人建议用操作系统。按键的驱动就是很典型的适用于操作系统的应用,毫秒级的延时正好可以用taskDelay这种函数,释放了cpu的占用,程序可以去干别的。
如果不想用操作系统,那可以定时器来辅助。基本思路就是使用状态机的模式,将按键的处理做成周期性执行的操作,如果某些场合需要的延时不一样,那就用计数变量把长延时拆成短延时。每个周期按键扫描函数执行一次,用定时器同步,函数内没有任何软延时。
建议将去抖动和按键功能触发做成2个层次,底层的去抖动处理只实时更新每个按键IO的电平,上层的触发检测根据不同的电平和每个按键的模式配置、状态机的状态,来判断需要执行的操作。 假如以后移植到rtos里,直接做一个周期性执行的任务即可。
目前手里没有现成的代码,这个只是思路。不过前几年在这个论坛上见过有人发过很详细的按键驱动代码,功能很全,当时我还没收藏,你可以找找看。
一周热门 更多>