基於STM32L151//STM32F407的矩陣鍵盤程式(不規則介面):
阿新 • • 發佈:2019-02-03
void KeyPress(void){
int KeyValues;
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)
{
Delay10ms(20);
GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_12);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==1)
{
KeyValues=10;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==1)
{
KeyValues=11;
}
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1);
/////////////////////////////////////////////
GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
GPIO_SetBits(GPIOA,GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==1)
{
KeyValues=7;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==1)
{
KeyValues=8;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)
{
KeyValues=9;
}
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1);
//////////////////////////////////////////////
GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
GPIO_SetBits(GPIOB,GPIO_Pin_3);
GPIO_ResetBits(GPIOB,GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_12);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==1)
{
KeyValues=4;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==1)
{
KeyValues=5;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)
{
KeyValues=6;
}
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1);
////////////////////////////////////////////////
GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB,GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_12);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==1)
{
KeyValues=1;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==1)
{
KeyValues=2;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)
{
KeyValues=3;
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1);
GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4);
GPIO_SetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_12);
}
}
}