//按键处理任务的任务函数
void
Keyprocess_task(
void
*p_arg)
{
u8 num;
u8 *key;
OS_MSG_SIZE size;
OS_ERR err;
while
(1)
{
//请求消息KEY_Msg
key=OSQPend((OS_Q* )&KEY_Msg,
(OS_TICK )0,
(OS_OPT )OS_OPT_PEND_BLOCKING,
(OS_MSG_SIZE* )&size,
(CPU_TS* )0,
(OS_ERR* )&err);
switch
(*key)
{
case
WKUP_PRES:
//KEY_UP控制LED1
LED1 = ~LED1;
break
;
case
KEY2_PRES:
//KEY2控制蜂鸣器
BEEP = ~BEEP;
break
;
case
KEY0_PRES:
//KEY0刷新LCD背景
num++;
LCD_Fill(126,111,233,313,lcd_discolor[num%14]);
break
;
case
KEY1_PRES:
//KEY1控制定时器1
tmr1sta = !tmr1sta;
if
(tmr1sta)
{
OSTmrStart(&tmr1,&err);
LCD_ShowString(10,150,100,16,16,\"TMR1 START!\");
}
else
{
OSTmrStop(&tmr1,OS_OPT_TMR_NONE,0,&err);
//停止定时器1
LCD_ShowString(10,150,100,16,16,\"TMR1 STOP! \");
}
break
;
}
}
}
//显示消息队列中的消息
void
msgdis_task(
void
*p_arg)
{
u8 *p;
OS_MSG_SIZE size;
OS_ERR err;
while
(1)
{
//请求消息
p=OSQPend((OS_Q* )&DATA_Msg,
(OS_TICK )0,
(OS_OPT )OS_OPT_PEND_BLOCKING,
(OS_MSG_SIZE* )&size,
(CPU_TS* )0,
(OS_ERR* )&err);
LCD_ShowString(5,270,100,16,16,p);
myfree(SRAMIN,p);
//释放内存
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err);
//延时1s
}