📄 switch_test.c
字号:
/*
Module Name : switch_test.c
Functions : SWITCH_TEST
Purpose : Test board switch
Author : Otis Yu 2005/03/31
Notes :
*/
/*--------------------------------------------------------------------------*
* Local header files *
*--------------------------------------------------------------------------*/
#include <system/armsys270.h>
#include <csl/csl_emifhal_270.h>
#include <demo/uart270.h>
#include <demo/gio270.h>
#include <csl/armcsl_addr_270.h>
#include <csl\csl_giohal_270.h>
/*--------------------------------------------------------------------------*
* Extern global variables *
*--------------------------------------------------------------------------*/
extern char UART_outBuff[1024];
extern volatile unsigned short UART0IntFlag;
extern unsigned char Ctrl_FIFO1;
/*--------------------------------------------------------------------------*
* Const, Macro, type definition *
*--------------------------------------------------------------------------*/
#define KEY_MASK 0x07FF
/* External Memory Interface Register Define */
#define CS4CTRL1 0x30A12
#define CS4CTRL2 0x30A14
#define BUSRLS 0x30A18
/*--------------------------------------------------------------------------*
* Global Variables *
*--------------------------------------------------------------------------*/
static unsigned short *p;
/*--------------------------------------------------------------------------*
* Local Functions declaration *
*--------------------------------------------------------------------------*/
unsigned short API_KEY_IsValidKey( unsigned short key );
void DEV_KEY_Init( void );
void DEV_KEY_SetIRQ( void );
/*--------------------------------------------------------------------------*
* Local Variables Declartaion *
*--------------------------------------------------------------------------*/
unsigned short key;
/*---------------------------------------------------------*
* Brief : DEV_KEY_Init
* Return :
* Description :
*----------------------------------------------------------*/
void DEV_KEY_Init( void )
{
EMIF_FSET( CS4CTRL2, BUSW4, 1 ); // ram bus work in 16-bits mode
EMIF_FSET( BUSRLS, BUSSEL, 0 ); // all ver. work in Normal mode
EMIF_RSET( CS4CTRL1, 0x89FF ); // CE & CYC width set 16 clock
}
/*---------------------------------------------------------*
* Brief : DEV_KEY_ReadData
* Return : keydata
* Description :
*----------------------------------------------------------*/
unsigned int DEV_KEY_ReadData( void )
{
static unsigned short keydata;
asm( " NOP" );
keydata = *( volatile unsigned short* )0x09100000;
keydata = (~keydata)&0x1FFF;
return keydata;
}
/*--------------------------------------------------------------------------*
* Brief : API KEY Scan Function *
* Return : None *
* Description : *
*--------------------------------------------------------------------------*/
void SWITCH_TEST( void )
{
unsigned short i,j,k;
UART_sendString( UART0, "\r\n ***************SWITCH TEST***************" );
UART_sendString( UART0, "\r\n Please Press Any Key(Target Board) For Test:" );
UART_sendString( UART0, "\r\n " );
for(i=0 ; i<=8 ; i++){
do
{
DEV_KEY_Init( );
busc_ini( );
for(j=0 ; j<0x1000 ; j++)
for(k=0 ; k<0x60 ; k++){}
key = DEV_KEY_ReadData();
key = key & KEY_MASK;
p=&key;
}
while( key == 0x0000 );
{
if(key == 0x0100 || key == 0x0080)
{
i--;
}
else
{
API_KEY_IsValidKey( key );
UART_sendString( UART0, "\r\n " );
}
}
}
UART_sendString( UART0, "\r\n Push Any Key(PC) Exit Test" );
while(UART0IntFlag);
UART0IntFlag = 1;
}
/*--------------------------------------------------------------------------*
* Brief : Is Valid Key *
* Return : None *
* Description : *
*--------------------------------------------------------------------------*/
unsigned short API_KEY_IsValidKey( unsigned short key )
{
unsigned short keycheck;
keycheck = key & 0x07FF;
switch ( keycheck )
{
case 0x0001: sprintf(UART_outBuff, "\r\n You press Key is ENTER KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_0
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0002: sprintf(UART_outBuff, "\r\n You press Key is LEFT KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_1
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0004: sprintf(UART_outBuff, "\r\n You press Key is RIGHT KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_2
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0008: sprintf(UART_outBuff, "\r\n You press Key is ESC KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_3
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0010: sprintf(UART_outBuff, "\r\n You press Key is VOL_UP KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_4
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0020: sprintf(UART_outBuff, "\r\n You press Key is VOL_DOWN KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_5
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0400: sprintf(UART_outBuff, "\r\n You press Key is MENU KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_10
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x00c0: sprintf(UART_outBuff, "\r\n You press Key is DOWN KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_13
UART_sendString( UART0, "\r\n PASS" );
return 0;
case 0x0300: sprintf(UART_outBuff, "\r\n You press Key is UP KEY = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );//KEY_14
UART_sendString( UART0, "\r\n PASS" );
return 0;
default:
sprintf(UART_outBuff, "\r\n KEY ERROR = 0x%x",*p);
UART_sendString( UART0, UART_outBuff );
return 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -