亿万斯年 发表于 2015-8-17 11:40:48

往RA8875移植矩阵键盘程序失败

安富莱提供的例程RA8875,往里面移植4×4矩阵键盘失败,就是搞不懂原因,扫描程序如下int KEY_Scan(void){
u8 KeyVal;
GPIO_Write(GPIOA,(GPIOA->ODR & 0xf0ff | 0x0f00));
if((GPIOA->IDR & 0xf000)==0x0000)
    return -1;
else
{
   bsp_DelayMS(5);
   if((GPIOA->IDR & 0xf000)==0x0000)
   return -1;
   }
   GPIO_Write(GPIOA,(GPIOA->ODR & 0xf0ff | 0x0100));
    switch(GPIOA->IDR & 0xf000)
      {
         case 0x1000: KeyVal=15; break;
             case 0x2000: KeyVal=11; break;   
         case 0x4000: KeyVal=7; break;
         case 0x8000: KeyVal=3; break;
          }
        GPIO_Write(GPIOA,(GPIOA->ODR & 0xf0ff | 0x0200));
       switch(GPIOA->IDR & 0xf000)
      {
         case 0x1000: KeyVal=14; break;
             case 0x2000: KeyVal=10; break;   
         case 0x4000: KeyVal=6; break;
         case 0x8000: KeyVal=2; break;
          }
        GPIO_Write(GPIOA,(GPIOA->ODR & 0xf0ff | 0x0400));
        switch(GPIOA->IDR & 0xf000)
       {
         case 0x1000: KeyVal=13; break;
             case 0x2000: KeyVal=9; break;   
         case 0x4000: KeyVal=5; break;
         case 0x8000: KeyVal=1; break;
            }
        GPIO_Write(GPIOA,(GPIOA->ODR & 0xf0ff | 0x0800));
        switch(GPIOA->IDR & 0xf000)
           {
          case 0x1000: KeyVal=12; break;
                 case 0x2000: KeyVal=8; break;   
          case 0x4000: KeyVal=4; break;
          case 0x8000: KeyVal=0; break;
           }
        return KeyVal;
        }



ql1000 发表于 2016-8-28 23:18:40

学习学习
页: [1]
查看完整版本: 往RA8875移植矩阵键盘程序失败