首页 > 代码库 > 嵌入式实时系统程序开发一:按键程序编写
嵌入式实时系统程序开发一:按键程序编写
为了回顾以前的东西,以及把操作系统的思想能用在处理器的多任务操作上,会持续连载一些文章,这些思想主要借鉴周慈航《基于嵌入式实时系统程序设计技术》一书
键盘程序控制技术:
键盘作为输入输出口,是我们常用的一个模块,下面把自己总结的键盘程序大体描绘一下。
键盘中有两个问题我们需要解决:一个是防抖,一个是要避免连击。
对于防抖:通常我们加延时函数,等待按键稳定后再执行后面的步骤,但是具体要延时多长时间只能凭借经验或尝试的办法,不可靠,更好的办法是我们可以设置两个状态变量,分别保存按键上一时刻和这一时刻的状态,当两个状态一样时,说明按键状态稳定。
避免连击:连击通常也会造成不可预知的操作,避免连击就是让按键一次只响应一次,为此我们需要检测按下和释放两种状态,然后再执行相应的操作。一般有两种方法,一是按键按下,执行相应操作,然后检测释放;二是,检测按键按下并释放后,然后执行相应操作。我一般用第二种。
程序流程:
int TaskKey(void* pdata)
{
INT8U key,key0;
while(1)
{
OSTimeDly(1);
key=keyin();
if(key=未按下|key!=key0) //如果按键没有按下或者按键前后状态不一,继续检查按键状态
{
key0=key;
continue;
}
which(key)
{
执行相应按键解析函数,并更新显示消息。
}
while(1)
{
key=keyin();
if(key释放) break; //如果按键释放,跳出循环,一次按键相应操作完成
OSTimeDly(1);
}
}
}
嵌入式实时系统程序开发一:按键程序编写