📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
extern void minigui_app_entry (void);
/* 按键消息邮箱 */
OS_EVENT *KeyMbox = NULL; // 按键消息邮箱
#define TaskStkLengh 64 // Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK TaskStk [TaskStkLengh]; // Define the Task0 stack 定义用户任务0的堆栈
void Task0(void *pdata); // Task0 任务0
int main(void)
{
OSInit ();
OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 10);
minigui_app_entry();
KeyMbox = OSMboxCreate(NULL); // 建立一个邮箱,用于传递按键消息
OSStart();
return(0);
}
/*********************************************************************************************************
** Task0 任务0
** 键盘驱动任务。读取ZLG7290扫描的按键值,然后把键值发送到KeyMbox邮箱。
** 由MiniGUI的"comm" IAL输入引擎接收KeyMbox邮箱的消息,然后进行相应的处理。
********************************************************************************************************/
void Task0 (void *pdata)
{ static uint8 s_key_sta = 0;
static uint8 s_key_in = 0;
uint16 key;
pdata = pdata;
TargetInit();
while (1)
{ key = ZLG7290GetKey();
if(key&0x00FF) // 如果有按键,则判断是否要发送按下消息
{ if(s_key_sta==0) // 按键单击
{ /* 设置消息中的按键值。d7位表示按键状态,按下为1,
放开为0;d3--d0为相应的按键值。 */
s_key_in = (key-1)&0x000F; // 原按键值为1-16,所以要减1变为0-15
s_key_in |= 0x80;
OSMboxPost(KeyMbox, (void *)&s_key_in);
s_key_sta = 1;
}
else // 按键连击
{ /* 倘若是(摸拟)鼠标移动按键连击,则需要发送按键按下消息 */
switch(key&0xFF)
{ case 9:
case 10:
case 11:
case 14:
s_key_in = (key-1)&0x000F;
s_key_in |= 0x80;
OSMboxPost(KeyMbox, (void *)&s_key_in);
break;
default:
break;
}
}
}
else // 如果是没有按键,则判断是否要发送放开消息
{ if(s_key_sta != 0) // 按键放开,则发送按键放开消息
{ s_key_in &= 0x0F;
OSMboxPost(KeyMbox, (void *)&s_key_in);
}
s_key_sta = 0;
}
OSTimeDly(5);
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -