今天做测试矩阵键盘模块发现第一行的四个按键一按就卡机,,代码如下迫切望大佬解释
#define Key_Hang GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
#define Key_Lie GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
u8 Key_Scan(void)
{
u8 hang;
u8 lie;
u8 key,i,final=0xff;
RCC->APB2ENR |= 1<<2; //使能
GPIOA->CRL &= 0X00000000;
GPIOA->CRL |= 0X88888888;
GPIOA->ODR |= 0XF0<<0;
if(ReKey != 0xf0)
{
delay_ms(10);
if(ReKey != 0xf0)
{
hang = 0x0f&Read_hang();
lie = 0xf0&Read_lie();
key = hang | lie;
for(i=0;i<16;i++)
{
if(key == key_table[i])
{
final = i+1; //此处做了修改
}
}
GPIOA->CRL &= 0X00000000;
GPIOA->CRL |= 0X88888888;
GPIOA->ODR |= 0XF0<<0;
while(ReKey != 0xf0);
}
}
return final;
}
以下是主函数部分
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600);
LCD_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
POINT_COLOR=RED;
price=0;
weight=1;
DIS_Init();
LCD_Clear(RED);
while(1)
{
Key_Num=Key_Scan();
POINT_COLOR=RED;
if(Key_Num==255);
else {LCD_Clear(RED);
LCD_ShowxNum(80,40,Key_Num,2,16,0);}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
大佬能否加个qq指导一下,,实在无头绪
一周热门 更多>