資源簡介
4*4矩陣按鍵只需要8個I/O口,根據自己的需求簡單修改。

代碼片段和文件信息
#include?“stm32f10x.h“
#include?“delay.h“
#include?“KeyBoard.h“
void?KeyBoard_Init(void)?
{?
GPIO_InitTypeDef?GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_KEY_GPIOENABLE);????
GPIO_InitStructure.GPIO_Pin??=?GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;????????
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;?
GPIO_Init(KEY_GPIO?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin??=?GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IPD;??
GPIO_Init(KEY_GPIO?&GPIO_InitStructure);??
GPIO_SetBits(KEY_GPIOGPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
GPIO_ResetBits(KEY_GPIOGPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
?????
}
u8?Read_KeyValue(void)
{?????????
u8?KeyValue?=?0;
if(GPIO_ReadInputData(KEY_GPIO)&0xf0)
{
delay_ms(10);
if(GPIO_ReadInputData(KEY_GPIO)&0xf0)
{
GPIO_SetBits(KEY_GPIOGPIO_Pin_0);
GPIO_ResetBits(KEY_GPIOGPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
switch(GPIO_ReadInputData(KEY_GPIO)&0xff)
{
case?0x11:KeyValue?=?13;?break;
case?0x21:KeyValue?=?12;?break;
case?0x41:KeyValue?=?11;?break;
case?0x81:KeyValue?=?10;?break;?
????}
GPIO_SetBits(KEY_GPIOGPIO_Pin_1);
GPIO_ResetBits(KEY_GPIOGPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3);
switch(GPIO_ReadInputData(KEY_GPIO)&0xff)
{
case?0x12:KeyValue?=?15;?break;????//#??15
case?0x22:KeyValue?=?9;?break;
case?0x42:KeyValue?=?6;?break;
case?0x82:KeyValue?=?3;?break;????????
}
GPIO_SetBits(KEY_GPIOGPIO_Pin_2);
GPIO_ResetBits(KEY_GPIOGPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3);
switch(GPIO_ReadInputData(KEY_GPIO)&0xff)
{
case?0x14:KeyValue?=?0;?break;
case?0x24:KeyValue?=?8;?break;
case?0x44:KeyValue?=?5;?break;
case?0x84:KeyValue?=?2;?break;????????
}
GPIO_SetBits(KEY_GPIOGPIO_Pin_3);
GPIO_ResetBits(KEY_GPIOGPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);
switch(GPIO_ReadInputData(KEY_GPIO)&0xff)
{
case?0x18:KeyValue?=?14;?break;???//*14
case?0x28:KeyValue?=?7;?break;
case?0x48:KeyValue?=?4;?break;
case?0x88:KeyValue?=?1;?break;????????
}
while(GPIO_ReadInputData(KEY_GPIO)&0xf0);
GPIO_SetBits(KEY_GPIOGPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
???? GPIO_ResetBits(KEY_GPIOGPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
return?KeyValue;
}
}
return?0xff;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2658??2017-04-13?11:48??KEY\KeyBoard.c
?????文件?????????209??2017-04-13?11:10??KEY\KeyBoard.h
?????目錄???????????0??2017-04-13?11:48??KEY\
評論
共有 條評論