?? keyboard.c
字號:
/*
***************************************************************************************
*
* (c) Copyright 2006-2008, hui lian. luo, china, zj. hz
* All Rights Reserved
*
* 深圳市英蓓特信息技術有限公司
* http://www.embedinfo.com
* 博格達科技有限公司
* http://www.bogodtech.com
*
*--------------文件信息-----------------------------------------------------------------
* 文 件 名: kpd.c
* 創 建 人: 羅輝聯(wyuyun@hotmail.com, lhlzjut@hotmail.com)
* 創建日期: 2007年11月10日
* 描 述: 鍵盤操作文件
* 技術顧問: 樓東武(副教授) 浙江大學信電系
*
*---------- 版本信息-------------------------------------------------------------------
* 版 本: V1.0
*
*--------------------------------------------------------------------------------------
****************************************************************************************
*/
#include "config.h"
#define DLY_CNT 10
/* Private define --------------------------------------------------------------------*/
#define KEY_SCAN_TEMP() (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13))
#define KEY_SCAN_WAKUP() (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))
#define KEY_SCAN_KEY1() (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4))
#define KEY_SCAN_KEY2() (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
#define KEY_SCAN_KEY3() (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1))
#define KEY_SCAN_KEY4() (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
/* Private variables ----------------------------------------------------------------*/
/* Public variables -----------------------------------------------------------------*/
/*$PAGE*/
/*
****************************************************************************************
* 鍵盤初始化
*
* 功能描述: 初始化行列式鍵盤接口
*
* 參 數: None
*
*
* 返 回 值: None
*
*----------------------------------------------------------------------------------------
*****************************************************************************************
*/
void kpd_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_10;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*
****************************************************************************************
* 鍵盤掃描
*
* 功能描述: 鍵盤掃描函數
** 參 數: None
** 返 回 值: 鍵盤掃描值
** 作 者: 羅輝聯
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************/
INT8U kpd_scan(void)
{
INT8U ret = 0;
if(KEY_SCAN_TEMP() == 0)
{
sleep(DLY_CNT);
if(KEY_SCAN_TEMP() == 0)
ret = KEY_TEMP;
else
ret = 0;
}
else if(KEY_SCAN_WAKUP() == 0)
{
sleep(DLY_CNT);
if(KEY_SCAN_WAKUP() == 0)
ret= KEY_WAKUP;
else
ret = 0;
}
else if(KEY_SCAN_KEY1() == 0)
{
sleep(10);
if(KEY_SCAN_KEY1() == 0)
ret = KEY_KEY1;
else
ret = 0;
}
else if(KEY_SCAN_KEY2() == 0)
{
sleep(DLY_CNT);
if(KEY_SCAN_KEY2() == 0)
ret = KEY_KEY2;
else
ret = 0;
}
else if(KEY_SCAN_KEY3() == 0)
{
sleep(DLY_CNT);
if(KEY_SCAN_KEY3() == 0)
ret = KEY_KEY3;
else
ret = 0;
}
else if(KEY_SCAN_KEY4() == 0)
{
sleep(DLY_CNT);
if(KEY_SCAN_KEY4() == 0)
ret = KEY_KEY4;
else
ret = 0;
}
return ret;
}
/****************************************************************************************
** 函數名稱: kpd_task_core
** 功能描述: 鍵盤處理任務入口
** 參 數: *pdata
** 返 回 值: None
** 作 者: 羅輝聯
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************/
void kpd_task_core(void *pdata)
{
INT8U KeyValue = 0;
while(1)
{
/* 大約150MS 掃描一次 */
OSTimeDlyHMSM(0,0,0,160);
KeyValue = kpd_scan();
if(KeyValue != 0)
{
mmi_send_key(GUI_Windows,KeyValue);
KeyValue = 0;
}
}
}
/************************************** end of file *************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -