key.c

来自「ucos在9200上的移植」· C语言 代码 · 共 36 行

C
36
字号

#include "AT91RM9200.h"

extern void AT91F_PIO_CfgInput(AT91PS_PIO pPio,unsigned int inputEnable);
extern void AT91F_PIO_CfgInputFilter(AT91PS_PIO pPio,unsigned int inputFilter);
extern void	AT91F_PIO_InterruptDisable(AT91PS_PIO pPio,unsigned int flag);
extern void	AT91F_PIO_CfgPullup(AT91PS_PIO pPio,unsigned int pullupEnable);
extern void	AT91F_PIO_CfgOutput(AT91PS_PIO pPio,unsigned int pioEnable);

/*configure PIO for keyboard*/
void Configure_Key()
{
	*AT91C_PMC_PCER  |= 1 << AT91C_ID_PIOB;					//enable PIOB clock	
	AT91F_PIO_InterruptDisable(AT91C_BASE_PIOB,0x01ff<<3);	//disable interrupt PB3-11
	AT91F_PIO_CfgPullup(AT91C_BASE_PIOB,0x01ff<<3);			//enable pullup resistor PB3-11
	AT91F_PIO_CfgInput(AT91C_BASE_PIOB,0x0f<<3);			//configure input PB3-6
	AT91F_PIO_CfgInputFilter(AT91C_BASE_PIOB,0x0f<<3);		//enable input filter PB3-6
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,0x1f<<7);			//configure output PB7-11
}

int key_matrix_scan(int para)
 {
 	int i;
 	for(i=0;i<5;i++)
 	{
 		AT91F_PIO_SetOutput(AT91C_BASE_PIOB,0x1f<<7);
 		AT91F_PIO_ClearOutput(AT91C_BASE_PIOB,0x1<<(7+i));
 		
 		if(((AT91F_PIO_GetInput(AT91C_BASE_PIOB)>>3) & 0x0f ) == para)
 		break;	
 	}
 	return i;
 } 


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?