/*--------------------------------------------------------------------------------------*矩阵键盘驱动*文件:keyboard.c*编写人:LiuHui*描述:扫描4x4矩阵键盘输入,并返回键值*适用范围:驱动采用ST3.5库编写,适用于STM32F10x系列单片机*所用引脚:PA0-PA7*编写时间:2013年11月22日*版本:1.0--------------------------------------------------------------------------------------*/#includestm32f10x.h#includekeyboard.h#includedealy.h/*--------------------------------矩阵键盘初始化----------------------------------------*功能:初始化stm32单片机GPIO//PA0-PA7*参数传递:*输入:无*返回值:无--------------------------------------------------------------------------------------*/voidKeyBoard_Init(void){GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);}/*------------------------------矩阵键盘扫描--------------------------------------------*功能:扫描矩阵键盘,并返回键值*参数:*输入:无*返回:有键按下返回该键值*无键按下时则返回0--------------------------------------------------------------------------------------*/u8Read_KeyValue(void){u8KeyValue=0;if((GPIO_ReadInputData(GPIOA)&0xff)!=0x0f){Delay_ms(10);if((GPIO_ReadInputData(GPIOA)&0xff)!=0x0f){GPIO_SetBits(GPIOA,GPIO_Pin_0);GPIO_ResetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);switch(GPIO_ReadInputData(GPIOA)&0xff){case0x11:KeyValue=1;break;case0x21:KeyValue=5;break;case0x41:KeyValue=9;break;case0x81:KeyValue=13;break;}GPIO_SetBits(GPIOA,GPIO_Pin_1);GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3);switch(GPIO_ReadInputData(GPIOA)&0xff){case0x12:KeyValue=2;break;case0x22:KeyValue=6;break;case0x42:KeyValue=10;break;case0x82:KeyValue=14;break;}GPIO_SetBits(GPIOA,GPIO_Pin_2);GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3);switch(GPIO_ReadInputData(GPIOA)&0xff){case0x14:KeyValue=3;break;case0x24:KeyValue=7;break;case0x44:KeyValue=11;break;case0x84:KeyValue=15;break;}GPIO_SetBits(GPIOA,GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);switch(GPIO_ReadInputData(GPIOA)&0xff){case0x18:KeyValue=4;break;case0x28:KeyValue=8;break;case0x48:KeyValue=12;break;case0x88:KeyValue=16;break;}GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);while((GPIO_ReadInputData(GPIOA)&0xff)!=0x0f);returnKeyValue;}}return0;}/*--------------------------------THEEND--------------------------------------------*//*--------------------------------------------------------------------------------------*矩阵键盘驱动*文件:keyboard.h*编写人:LiuHui*描述:扫描4x4矩阵键盘输入,并返回键值*适用范围:驱动为ST3.5库编写,适用于STM32F10x系列单片机*所用引脚:PA0-PA7*编写时间:2013年11月22日*版本:1.0--------------------------------------------------------------------------------------*/#ifndef__KEYBOARD_H#define__KEYBOARD_HvoidKeyBoard_Init(void);u8Read_KeyValue(void);#endif/*----------------------------------THEEND------------------------------------------*/