1. 程式人生 > >基於STM32L151//STM32F407的矩陣鍵盤程式(不規則介面):

基於STM32L151//STM32F407的矩陣鍵盤程式(不規則介面):


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);
   }
  }
}