写了一个 32矩阵按键扫描的程序 推测是读寄存器 IDR 有问题 大家帮忙看一下 感谢

2019-07-14 20:37发布

这是我某一行的扫描代码
GPIOB->ODR=((GPIOB->ODR&0xfff0) | 0x0020);//设置对应的行IO口为高电平
        switch(GPIOB->IDR&0X03C0)//检测四列对应IO口的高低电平
        {
                case 0X0040:KeyVal=12;break;
                case 0x0080:KeyVal=13;break;
                case 0x0100:KeyVal=14;break;
                case 0x0200:KeyVal=15;break;
    default:return 0;
               
               
        }

int main(void)
{       
   u8 keycode=0;
        KEY_Init();  
  uart_init(115200);         
        printf(" start");
         while(1)
         {
         keycode=KEY_Scan();
                 if(keycode)
                 {
                 printf("%d ",keycode);
      keycode=0;
                 }


}
//                 
}

我用的串口显示按键值   ,但是按键不按下去  ,扫描程序就会进入SWITCH语句里。应该是扫面那块出了问题  ,但是不知道是什么问题。求解   。
0条回答

一周热门 更多>