OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2591|回复: 5

关于矩阵键盘扫描程序个别按键卡机

[复制链接]

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-7-17
在线时间
11 小时
发表于 2017-7-30 15:01:15 | 显示全部楼层 |阅读模式
1金钱
今天做测试矩阵键盘模块发现第一行的四个按键一按就卡机,,代码如下迫切望大佬解释
#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);}
               
       
       
        }
       

最佳答案

查看完整内容[请看2#楼]

大佬能否加个qq指导一下,,实在无头绪
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-7-17
在线时间
11 小时
 楼主| 发表于 2017-7-30 15:01:16 | 显示全部楼层
操作系统 发表于 2017-7-30 15:24
键盘扫描程序,不是那么简单的哟

大佬能否加个qq指导一下,,实在无头绪
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-7-30 15:24:16 | 显示全部楼层
键盘扫描程序,不是那么简单的哟
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-7-30 18:15:03 | 显示全部楼层
你如是学习研究,那应该多自己独立思考.如你是有商业用途,我有例程,可以卖给你呀.
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-7-17
在线时间
11 小时
 楼主| 发表于 2017-7-31 10:19:11 | 显示全部楼层
操作系统 发表于 2017-7-30 18:15
你如是学习研究,那应该多自己独立思考.如你是有商业用途,我有例程,可以卖给你呀.

啊好吧,那加波好友吧,日后可能合作
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-7-17
在线时间
11 小时
 楼主| 发表于 2017-7-31 10:19:25 | 显示全部楼层
操作系统 发表于 2017-7-30 18:15
你如是学习研究,那应该多自己独立思考.如你是有商业用途,我有例程,可以卖给你呀.

啊好吧,那加波好友吧,日后可能合作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-19 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表