亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hw_r2424key.c

?? RK27驅動
?? C
字號:
/******************************************************************/
/*   Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved.  */
/*******************************************************************
File	:  hw_keyboard.c
Desc	:  掃描按鍵消息\接口函數的實現
		  
Author	: huangxinyu
Date	: 2007-07-05
Notes	: 

$Log: hw_Rm970key.c,v $
Revision 1.1.1.1  2007/12/21 02:34:33  Lingzhaojun
12.21

Revision 1.2  2007/12/14 15:09:29  Hanjiang
rm972 pp后的版本上傳

Revision 1.1.1.1  2007/12/11 14:19:29  cvsadmin
no message

Revision 1.1.1.1  2007/12/01 01:30:06  Lingzhaojun
no message

Revision 1.1  2007/11/26 14:30:11  Huangxinyu
改變matrixkey目錄

Revision 1.10  2007/11/23 07:32:10  Huangshilin
no message

Revision 1.9  2007/11/07 13:28:05  Huangxinyu
兩個按鍵同時按下問題的修改

Revision 1.8  2007/11/01 01:46:14  Huangxinyu
增加RK2706的兼容性

Revision 1.7  2007/10/24 09:20:06  Huangxinyu
根據LCD管腳沖突情況重新修改陣列按鍵

Revision 1.6  2007/10/20 04:46:31  Huangshilin
for RK2700

Revision 1.5  2007/10/16 04:16:49  Huangxinyu
陣列鍵盤調試完成提交

Revision 1.4  2007/10/15 09:16:37  Huangxinyu
根據RK27提交修改driver

Revision 1.3  2007/10/08 02:38:45  Lingzhaojun
添加版本自動注釋腳本

*********************************************************************/

#include "include.h"
#include "hw_include.h"
#include "hw_R2424key.h"
#include "hw_gpio.h"
#include "hw_serial.h"
#include "hwapi_adc.h"

#include "hw_timer.h"

#if (KEY_TYPE == R2424KEY)

static  UINT8   gKeyPioState;                                                   /*  用于記錄GPIO口用作keyboard之前的狀態,在反初始化時可恢復 */
// gKeyPortValue[x][y] 的 x 用于記錄上次按鍵和本次按鍵的狀態 , y 用于記錄MatrixKey_COL_1\MatrixKey_COL_2\MatrixKey_COL_3的按下值
UINT8   gKeyPortValue[2][3] = { {0x00,0x00,0x00},{0x00,0x00,0x00} };                /*	用于記錄 按鍵 PIO 的狀態,相應位為高表示按下,相應位為低表示沒有按下或彈起 */
UINT8   gKeyPlayOnState = 0 ;

#if (CHIPTYPE == RK2700)
#define MatrixKey_ROW_1     GPIOPortA_Pin7    
#define MatrixKey_ROW_2     GPIOPortC_Pin6
#define MatrixKey_ROW_3     GPIOPortC_Pin5
#define MatrixKey_COL_1     GPIOPortC_Pin4
#define MatrixKey_COL_2     GPIOPortC_Pin3
#define MatrixKey_COL_3     GPIOPortC_Pin2
#define MatrixKey_COL_PORT      GPIOPortC
#define MatrixKey_COL_SHIFT      2
#define MatrixKey_COL_MASK       0x7
#elif(CHIPTYPE == RK2706)
#define MatrixKey_ROW_1     GPIOPortC_Pin4    
#define MatrixKey_ROW_2     GPIOPortC_Pin5
#define MatrixKey_ROW_3     GPIOPortC_Pin6
#define MatrixKey_COL_1     GPIOPortC_Pin3
#define MatrixKey_COL_2     GPIOPortC_Pin2
#define MatrixKey_COL_3     
#define MatrixKey_COL_PORT      GPIOPortC
#define MatrixKey_COL_SHIFT      2
#define MatrixKey_COL_MASK       0x3
#elif defined(LDK)
#define MatrixKey_ROW_1     GPIOPortA_Pin4    
#define MatrixKey_ROW_2     GPIOPortA_Pin5
#define MatrixKey_ROW_3     GPIOPortA_Pin6
#define MatrixKey_COL_1     GPIOPortA_Pin3
#define MatrixKey_COL_2     GPIOPortA_Pin2
#define MatrixKey_COL_3     GPIOPortA_Pin1
#define MatrixKey_COL_PORT      GPIOPortA
#define MatrixKey_COL_SHIFT      1
#define MatrixKey_COL_MASK       0x7
#else
#define MatrixKey_ROW_1
#define MatrixKey_ROW_2
#define MatrixKey_ROW_3
#define MatrixKey_COL_1
#define MatrixKey_COL_2
#define MatrixKey_COL_3
#define MatrixKey_COL_PORT
#define MatrixKey_COL_SHIFT
#define MatrixKey_COL_MASK
#endif

static UINT8 gMatrixKeyPin[] = {MatrixKey_ROW_1,MatrixKey_ROW_2,MatrixKey_ROW_3,MatrixKey_COL_1,MatrixKey_COL_2,MatrixKey_COL_3};
#ifdef ADC_KEY_EN	
static	INT16U		gKeyScanCode;	    /*	掃描碼 */
static  INT16U		gKeyDownMsgSend;
extern unsigned short   AdcValue[4];
extern unsigned char 	AdcCurrChn;
#endif
extern UINT16 gSysState;
/**************************************************************************
* 函數描述: 矩陣按鍵初始化
* 入口參數: 無
* 出口參數: 無
* 返回值:   無
***************************************************************************/
extern INT16U			gKeyDownMsgSend;
void RockKey_PowerOnInit(void)
{
    gKeyPioState = GPIO_GetPortDirection(PIO_KEY);

 // 增加單獨PC1口做PlayOn按鍵,設置為輸入
    GPIO_SetPinDirection(GPIOPortC_Pin1, GPIO_IN);
    GPIO_SetPinDirection(GPIOPortC_Pin2, GPIO_IN);
    GPIO_SetPinDirection(GPIOPortC_Pin3, GPIO_IN);
    GPIO_SetPinDirection(GPIOPortC_Pin4, GPIO_IN);
//  GPIO_SetPinDirection(GPIOPortC_Pin5, GPIO_IN);
    GPIO_SetPinDirection(GPIOPortC_Pin6, GPIO_IN);

    GPIO_SetPinLevel(GPIOPortC_Pin1,GPIO_LOW);
    GPIO_SetPinLevel(GPIOPortC_Pin2,GPIO_LOW);
    GPIO_SetPinLevel(GPIOPortC_Pin3,GPIO_LOW);
    GPIO_SetPinLevel(GPIOPortC_Pin4,GPIO_LOW);
    GPIO_SetPinLevel(GPIOPortC_Pin6,GPIO_LOW);
	gKeyDownMsgSend = 0;
	#ifdef		ADC_KEY_EN
    //StartHWTimer(1/*timer1*/, 5/*mstick*/, ADC_KEY_TimerISR);
	#endif

}
/**************************************************************************
* 函數描述: 發送按鍵消息
*           
* 入口參數: UINT16 press , UINT16 KeyNo
* 出口參數: 無
* 返回值:   無
***************************************************************************/
void  FieldRockKeySendMsg(UINT16 press , UINT16 KeyNo)
{
	if(gSysState&SYS_LCD_OFF)	//黑屏先喚醒
	{
		if(KeyNo == 10)			//HOLD鍵另外處理
		{
			RockKeySendKeyMsg(press, KeyNo);
			return;
		}
		if(press == 1)
			return;
		else
			RockKeySendKeyMsg(press, 11);	//發送無效消息
		return;
	}
	else
	{
        RockKeySendKeyMsg(press, KeyNo);
		return;
	}
}
/**************************************************************************
* 函數描述: 矩陣按鍵硬件檢測
*           矩陣掃描對于處于十字位置的3鍵不能檢測
* 入口參數: 無
* 出口參數: 無
* 返回值:   無
***************************************************************************/

unsigned int	Key_Test_Value=0;

void RockKeyScanning( void )
{
	UINT8	keys;
	UINT8	press;
	UINT8   i,j;    
	UINT8   pioData;
#ifdef ADC_KEY_EN	
	if(!PowerOnOK) return;
#endif

//========================================================
#if	1//(KEY_NUM==FIVE_KEY)
pioData=0;
pioData=GPIO_GetPortLevel(GPIOPortC)&0x5e;
switch(pioData)
{
	case 0x02:
		pioData=1;
		break;
	case 0x04:
		pioData=2;
		break;
	case 0x08:
		pioData=3;
		break;
	case 0x10:
		pioData=4;
		break;
	default:
		pioData=0;
		break;
}
     if( pioData > 0)    // 檢測到PlayOn按鍵按下
     {
          if( gKeyPlayOnState == 0)  // 原來是彈起狀態
            {
               gKeyPlayOnState = pioData;             
				FieldRockKeySendMsg(1, pioData);
            }
     } 
     else
    {
          if( gKeyPlayOnState >pioData)  // 原來是按下狀態
            {
               FieldRockKeySendMsg(0, gKeyPlayOnState);
               gKeyPlayOnState = 0;
            }
    } 
  #endif
//========================================================
#ifdef ADC_KEY_EN	
{

			UINT16  adcValue;	
		    adcValue = AdcValue[KEYBOARD_ADC];		   	   
			Key_Test_Value=adcValue;
			if( adcValue< 90+60 )//110
			{	

				if(gKeyDownMsgSend==0)
				{
					gKeyDownMsgSend = 1;
					gKeyScanCode = 5;
					FieldRockKeySendMsg(1, gKeyScanCode);
				}		
								
			}		    			
			else if( adcValue< 245+80 )//110
			{
				if(gKeyDownMsgSend==0)
				{
					gKeyDownMsgSend = 1;
					gKeyScanCode = 6;
					FieldRockKeySendMsg(1, gKeyScanCode);
				}				
								
			}
			else if( adcValue< 452+80 )//233
			{
				if(gKeyDownMsgSend==0)
				{
					gKeyDownMsgSend = 1;								
					gKeyScanCode = 7;
					FieldRockKeySendMsg(1, gKeyScanCode);
				}				
			}
			else if( adcValue< 635+40 )//365
			{
				if(gKeyDownMsgSend==0)
				{
					gKeyDownMsgSend = 1;													
					gKeyScanCode = 8;
					FieldRockKeySendMsg(1, gKeyScanCode);
				}				
			}
			else if( adcValue < 850+40)//608
			{
				if(gKeyDownMsgSend==0)
				{
					gKeyDownMsgSend = 1;								
					gKeyScanCode = 9;
					FieldRockKeySendMsg(1, gKeyScanCode);
				}				
			}
			else // 960
			{
				if(gKeyDownMsgSend)
				{
					gKeyDownMsgSend = 0;
					FieldRockKeySendMsg(0, gKeyScanCode);
					gKeyScanCode = 0;
				}
			} 
			
}
#endif			
}
//========================================================================
extern unsigned char AdcCurrChn = 0;
/**************************************************************************
* 函數描述: 讀取通道AB的值和AD鍵數值
*           
* 入口參數: 無
* 出口參數: 無
* 返回值:   無
***************************************************************************/
void  ADC_KEYSCAN_READ(void)
{
    unsigned short adctemp;
 
//********************AD鍵讀入判斷*******************************   

    if(ADC_ReadData(&adctemp))
        AdcValue[AdcCurrChn] = adctemp;
    AdcCurrChn++;
    if(AdcCurrChn>=Adc_channel_max)
        AdcCurrChn = Adc_channel0;
    ADC_Start(AdcCurrChn,NULL);	
}	

/**************************************************************************
* 函數描述: 矩陣按鍵反初始化
* 入口參數: 無
* 出口參數: 無
* 返回值:   無
***************************************************************************/
void RockKey_PowerOffDeinit(void)
{
    GPIO_SetPortDirection(PIO_KEY,gKeyPioState); // restore key port 
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品xxxxbbbb| 99久久婷婷国产| 日韩一区二区三区在线观看| 日韩高清在线观看| 91精品欧美综合在线观看最新| 亚洲午夜在线观看视频在线| 在线成人av影院| 韩国精品久久久| 中文字幕亚洲精品在线观看| 91成人在线免费观看| 午夜av区久久| 久久久蜜桃精品| 91在线精品一区二区| 亚洲一二三区在线观看| 精品国产三级电影在线观看| 国产成人免费视| 亚洲国产综合人成综合网站| 欧美成人官网二区| zzijzzij亚洲日本少妇熟睡| 亚洲一二三区不卡| 久久久久久久久免费| 色噜噜狠狠成人网p站| 蜜乳av一区二区三区| 久久无码av三级| 日本精品裸体写真集在线观看| 五月天久久比比资源色| 久久久精品国产免大香伊| 色婷婷综合久久久久中文一区二区 | 一区二区三区免费在线观看| 8x8x8国产精品| 成人一道本在线| 琪琪一区二区三区| 国产精品每日更新在线播放网址| 欧美日韩高清一区| 成人综合婷婷国产精品久久蜜臀| 香蕉成人啪国产精品视频综合网 | 精品国产乱码久久久久久图片| 成人av小说网| 日韩av在线发布| 亚洲视频一区二区在线| 26uuu国产电影一区二区| 91激情五月电影| 国产成人啪免费观看软件| 免费人成在线不卡| 一区二区三区在线观看国产| 精品成人私密视频| 欧美日韩国产系列| 91蜜桃在线观看| 福利一区福利二区| 久久国产精品99久久久久久老狼 | 亚洲摸摸操操av| 久久久亚洲精品一区二区三区| 91麻豆精品国产91久久久久 | 一区二区三区四区不卡视频| 国产日产亚洲精品系列| 欧美白人最猛性xxxxx69交| 欧美日韩国产小视频| 91浏览器在线视频| 99久久免费精品高清特色大片| 国产电影一区在线| 国产自产高清不卡| 韩国午夜理伦三级不卡影院| 日本vs亚洲vs韩国一区三区| 亚洲一级不卡视频| 亚洲一区二区欧美日韩| 一卡二卡三卡日韩欧美| 亚洲男同性视频| 成人欧美一区二区三区黑人麻豆 | 欧美日产在线观看| 精品视频免费在线| 欧美日韩一区二区三区高清| 欧美吞精做爰啪啪高潮| 欧美视频一区二区三区| 91国产视频在线观看| 91搞黄在线观看| 欧洲亚洲精品在线| 欧美电影影音先锋| 91精品国产综合久久蜜臀 | 在线观看av不卡| 欧美亚洲国产一卡| 9191精品国产综合久久久久久| 欧美日韩免费电影| 555www色欧美视频| 欧美成人艳星乳罩| 久久伊99综合婷婷久久伊| 国产午夜精品在线观看| 国产精品久久久久久户外露出| 自拍偷拍亚洲激情| 一区二区激情小说| 日韩成人精品在线| 经典三级视频一区| 成人福利在线看| 在线观看网站黄不卡| 欧美疯狂性受xxxxx喷水图片| 制服视频三区第一页精品| 日韩精品一区二区三区中文不卡| 精品国产1区二区| 国产精品久久毛片a| 亚洲影视在线播放| 美国一区二区三区在线播放| 国产精品一色哟哟哟| 成人免费毛片片v| 欧美色网一区二区| 日韩精品最新网址| 亚洲少妇屁股交4| 青青草国产成人99久久| 成人精品视频网站| 欧美日韩免费观看一区二区三区| 日韩欧美www| 综合电影一区二区三区| 日韩av电影免费观看高清完整版在线观看 | 26uuu另类欧美亚洲曰本| 国产精品美女www爽爽爽| 亚洲成人自拍网| 国产精品综合网| 欧美性受xxxx| 26uuu国产电影一区二区| 一区二区三区免费在线观看| 国精品**一区二区三区在线蜜桃| 一本色道久久综合狠狠躁的推荐| 91精品视频网| 亚洲天天做日日做天天谢日日欢 | 一本大道av一区二区在线播放| 51精品秘密在线观看| 日本一区二区三区在线观看| 亚洲1区2区3区视频| 成人av网站大全| 日韩免费视频线观看| 一区二区三区高清在线| 国产精品小仙女| 91麻豆精品久久久久蜜臀| 综合精品久久久| 国产一区二区视频在线播放| 欧美日韩国产综合草草| 亚洲欧美综合色| 国产精品一区二区免费不卡| 欧美一区二区黄| 亚洲一本大道在线| 91一区一区三区| 欧美国产精品中文字幕| 裸体歌舞表演一区二区| 欧美自拍偷拍午夜视频| 国产精品福利在线播放| 国产真实乱对白精彩久久| 欧美一区二区三区爱爱| 亚洲一卡二卡三卡四卡| 一本色道综合亚洲| 综合av第一页| 97久久精品人人做人人爽50路| 久久久99精品免费观看| 捆绑变态av一区二区三区| 91.xcao| 日韩激情中文字幕| 欧美精品v日韩精品v韩国精品v| 亚洲国产视频在线| 在线观看www91| 亚洲国产精品久久艾草纯爱| 一本一道久久a久久精品 | 久久网站热最新地址| 丝袜a∨在线一区二区三区不卡| 欧美在线观看你懂的| 亚洲乱码国产乱码精品精小说| 国产v日产∨综合v精品视频| 国产日韩影视精品| 国产精品 日产精品 欧美精品| 26uuu成人网一区二区三区| 国产美女精品一区二区三区| 精品国产免费久久| 国产一区二区视频在线| 欧美国产日本视频| av动漫一区二区| 亚洲免费伊人电影| 欧美综合视频在线观看| 亚洲mv在线观看| 日韩欧美国产三级电影视频| 狠狠色综合日日| 国产精品每日更新在线播放网址| 99久久免费精品| 亚洲大片精品永久免费| 欧美剧情电影在线观看完整版免费励志电影 | 九色|91porny| 欧美激情一区二区三区| 国产a级毛片一区| 亚洲色图欧美激情| 在线成人av网站| 国产精品91一区二区| 亚洲视频在线观看三级| 91麻豆精品国产91久久久资源速度 | www.久久久久久久久| 亚洲一区二区高清| 欧美一级一区二区| 国产成人av自拍| 一区二区国产视频| 精品国产乱码久久久久久影片| 成人精品鲁一区一区二区| 亚洲精品日产精品乱码不卡| 在线电影国产精品| 成人免费毛片a| 视频一区视频二区中文| 国产视频视频一区|