写了一个 32矩阵按键扫描的程序 推测是读寄存器 IDR 有问题 大家帮忙看一下 感谢
时间:10-02
整理:3721RD
点击:
这是我某一行的扫描代码
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\r\n",keycode);
keycode=0;
}
}
//
}
我用的串口显示按键值 ,但是按键不按下去 ,扫描程序就会进入SWITCH语句里。应该是扫面那块出了问题 ,但是不知道是什么问题。求解 。
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\r\n",keycode);
keycode=0;
}
}
//
}
我用的串口显示按键值 ,但是按键不按下去 ,扫描程序就会进入SWITCH语句里。应该是扫面那块出了问题 ,但是不知道是什么问题。求解 。
路过,,,,,,,,
首先知道查问题的方法,其次利用好手里的工具。
MDK+JLINK 就可以debug绝大多数的问题了。
具体可百度颖展ic芯片进官网查询