⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyboard.c

📁 ucosII移植到STM32处理器上的源码
💻 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 + -