本文主要是介绍TRTOS 使用消息队列键盘通用驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先加入一段废话,不加的话博客首页展示的时候会很丑,废话如下:这是一个可以通用的键盘驱动程序,只需要在任务参数中传入获取键值的函数,键盘任务会把所有按键的短按长按,抬起等操作全都通过消息发送到受体任务内,从而实现了键盘驱动隔离,更有效的节省了系统运行开支和加快了按键响应时间,消息队列的引用,更大的减少了操作漏执行。#include <Include.h>
#include <Key_Driver.h>uint8 KeyCode_Tos_TaskID=Tos_TaskNull;
/********************************************************************************
Func:键盘任务
Date:2017-3-8
Note:传入参数为获取按键码调用
********************************************************************************/void Task_KeyBoard(void *Tags)
{MGUI_KeyMsg KeyMsg;typedef uint8(*KeyBoardGetValue)(void);KeyBoardGetValue P;P=((KeyBoardGetValue)(Tags));Tos_TaskDelay(2000);while(1){Tos_TaskDelay(10);KeyMsg.KeyValue=P();KeyMsg.KeyTime=0;if(KeyMsg.KeyValue!=0){while(P()){Tos_TaskDelay(10);if(KeyMsg.KeyTime<50)KeyMsg.KeyTime++;if(KeyMsg.KeyTime>=50){Tos_TaskDelay(100);KeyMsg.KeyType=Key_DownTimeOut;Tos_TaskPutQmsg(KeyCode_Tos_TaskID,0,sizeof(MGUI_KeyMsg),&KeyMsg);}}if(KeyMsg.KeyTime<50){KeyMsg.KeyType=Key_OneClick;Tos_TaskPutQmsg(KeyCode_Tos_TaskID,0,sizeof(MGUI_KeyMsg),&KeyMsg);}}}
}
/********************************************************************************
Func:获取按键消息
Date:2017-3-8
Note:传入参数为延时时间0为无限等待,返回按键消息
********************************************************************************/
MGUI_KeyMs
这篇关于TRTOS 使用消息队列键盘通用驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!