
安富莱提供的例程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; } |
学习学习 |