Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41319
  • 博文数量: 18
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 10:27
文章分类
文章存档

2011年(1)

2009年(1)

2008年(16)

我的朋友

分类:

2008-10-31 09:44:58

3220_KeyPad 规划(3GPIO 实现9 key

修改原因:

因客户经常有提出添加部分按键功能的要求,故直接调用硬件实现的 3*3 4*4 并不方便修改。另外也浪费了一些IO,所以我们设计了一用 3 GPIO 实现 9 KEY 的电路,应该可以满足大部分用户的要求。

 

修改配置:

目前的修改,是直接替换掉了原先的KmiKey,所以要先打开 dpf\Config.h 中的   #define SMTK_KEY_MM220 才能生效。(现在保留了其他很多杂七杂八的客户的键盘扫描程序,如果此版本能够稳定,建议后续将其他程序砍掉,精简代码)

 

有修改到的文件:

\sdk\include\up\queue.h

\ dpf\ key.h

\ dpf\type.h

\ dpf\state.c

\ dpf\main.c

\ dpf\key.c

附档里有以上文件,是在828sourcecode 上面修改而成的,如果以上文件在新版中没有其他变化,可以直接覆盖处理,如果已经有更新,则可以按以下步骤修改添加:

 

l  打开 \sdk\include\up\queue.h,找到 /* Key code definition */,将原先的

/* Key code definition */

#define PAL_KEYPAD_0    0x30

#define PAL_KEYPAD_1    0x31

#define PAL_KEYPAD_2    0x32

#define PAL_KEYPAD_3    0x33

#define PAL_KEYPAD_4    0x34

#define PAL_KEYPAD_5    0x35

#define PAL_KEYPAD_6    0x56

改成:

/* Key code definition */

//Refer to  dpf\key.c    smtkKeyTable

#define PAL_KEYPAD_0    0x30      //PAL_KEYPAD_UP

#define PAL_KEYPAD_1    0x31      //PAL_KEYPAD_DOWN

#define PAL_KEYPAD_2    0x32      //PAL_KEYPAD_LEFT

#define PAL_KEYPAD_3    0x33      //PAL_KEYPAD_RIGHT

#define PAL_KEYPAD_4    0x34      //PAL_KEYPAD_ENTER

#define PAL_KEYPAD_5    0x35      //PAL_KEYPAD_MENU

#define PAL_KEYPAD_6    0x4b      //PAL_KEYPAD_VOL_UP

#define PAL_KEYPAD_7    0x4f       //PAL_KEYPAD_VOL_DOWN

#define PAL_KEYPAD_8    0x5b      //PAL_KEYPAD_SLIDE

 

特别注意:对这些 Key 值的定义,可以在dpf\key.c 中的smtkKeyTable 找到具体含义并随自己意愿设置。如果用户想增加自己的按键 PAL_KEYPAD_USER1,则可将PAL_KEYPAD_MENU 下的 0,” 改成 PAL_KEYPAD_USER1。然后在 \sdk\include\up\queue.h 中,讲 PAL_KEYPAD_8 定义为 0x36,这样用户就可以在自己的程序里面,使用 PAL_KEYPAD_USER1 去做自己的一系列操作。

l  打开\ dpf\ key.h

//MM220 Key Code definitions

#define KEY_220_0 0xEE

#define KEY_220_1 0xED

#define KEY_220_2 0xEB

#define KEY_220_3 0xDE

#define KEY_220_4 0xDD

#define KEY_220_5 0xDB

#define KEY_220_6 0xDC

 

改成//MM220 Key Code definitions

#define KEY_220_0 0xEE

#define KEY_220_1 0xED

#define KEY_220_2 0xEB

#define KEY_220_3 0xDE

#define KEY_220_4 0xDD

#define KEY_220_5 0xDB

#define KEY_220_6 0xDA

#define KEY_220_7 0xD9

#define KEY_220_8 0xD8

#define KEY_220_9 0xD7

l  打开\ dpf\type.h

#define SMTK_MSG_ID_POWER_ON   0x5 后加上

#define SMTK_MSG_ID_KEY_UP     0x6

l  打开\ dpf\state.c

 if (id == SMTK_MSG_ID_KEY_DOWN)

改成 if (id == SMTK_MSG_ID_KEY_DOWN || id == SMTK_MSG_ID_KEY_UP)    

l  打开 \ dpf\main.c

if (keyNumber)

{

  result = smtkStateMgrProcessMsg(SMTK_MSG_ID_KEY_DOWN, keyNumber, msgId);

  if (result)

  goto end;

}

       改成:

        if (keyNumber)

        {

            result = smtkStateMgrProcessMsg(SMTK_MSG_ID_KEY_DOWN, keyNumber, msgId);

            if (result)

                goto end;

            holdKeyNumber = keyNumber;

            lastKeyTime = PalGetClock();

        }

        else if (holdKeyNumber && PalGetDuration(lastKeyTime) > 550)

        {

            result = smtkStateMgrProcessMsg(SMTK_MSG_ID_KEY_UP, holdKeyNumber, msgId);

            if (result)

                goto end;            

            holdKeyNumber = 0;

            lastKeyTime = PalGetClock();

        }

l  因为 \ dpf\key.c 的改动较大,建议直接用附件覆盖!

文件: 220KeyPad規劃.rar
大小: 87KB
下载: 下载

 

阅读(1307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~