往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;
}
学习学习
页:
[1]