OpenEdv-开源电子网

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

按键实验

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-3-21
在线时间
8 小时
发表于 2017-4-10 20:50:02 | 显示全部楼层 |阅读模式
1金钱
int main(void)
{
        //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  u8 key;           //保存键值
  delay_ms(168);
//   SystemInit();

    LED_Init();       
//    KEY_Init();
        //  EXTIX_Init();
       
        while(1)
        {
          LED1(ON);
          LED2(ON);
//while(1)
        {
                key=KEY_Scan();                //得到键值
          
                        //去抖动                                  
                        switch(key)
                        {                                 
                               
                                case 1:        //控制LED0翻转
                                         LED1(OFF);
                                        break;
                                case 2:        //控制LED1翻转         
                                  LED2(OFF);
                                        break;
                                case 3:        //同时控制LED0,LED1翻转
                                       
                                        break;
                        }
                                delay_ms(100);
                }
        }
       
}



key 函数:

#include "delay.h"
void KEY_Init(void)  //按键相关的io 的初始化函数
{
          GPIO_InitTypeDef GPIO_InitStructure;

          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
       
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
          GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
          GPIO_Init(GPIOD, &GPIO_InitStructure);

}
/*

     KEY=0 没有见按下
     KEY=1  按下key0
     KEY=2  按下key1
     KEY=3  按下key3
*/

u8 KEY_Scan(void)
{         

        if(KEY0==0||KEY1==0||KEY2==0)
        {
                delay_ms(10);//去抖动
               
                if(KEY0==0)return 1;
                else if(KEY1==0)return 2;
                else if(KEY2==0)return 3;
       
        }else if(KEY0==1&&KEY1==1&&KEY2==1);             
        return 0;// 无按键按下
               
            

        return 0;// 无按键按下
}   

灯就是不能亮 真的很奇怪

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2017-1-15
在线时间
19 小时
发表于 2017-4-10 21:40:35 | 显示全部楼层
回复

使用道具 举报

1

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2015-10-13
在线时间
34 小时
发表于 2017-4-10 22:54:23 | 显示全部楼层
switch(key)
                        {                                 
                                
                                case 1:        //控制LED0翻转
                                         LED1(OFF);
                                        break;
                                case 2:        //控制LED1翻转         
                                  LED2(OFF);
                                        break;
                                case 3:        //同时控制LED0,LED1翻转
                                       
                                        break;
                        }





这些是什么意思,你按下让它亮了???第三个case也没有代码啊,汗
不要把钱当成你们的首要追求的目标,你们只需要追求两个字,卓越,你只要去追求它, 这个钱它自然就会跟着你,当你有了远大的目标跟志向的时候, 你自己本身它就是一个财富,钱,它就变成了一个副产品.
回复

使用道具 举报

1

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2017-3-10
在线时间
63 小时
发表于 2017-4-11 07:10:07 来自手机 | 显示全部楼层
delay没有初始化。
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-8-11
在线时间
19 小时
发表于 2017-4-11 08:09:44 | 显示全部楼层
有没有可能延时太短或者没有延时,灯亮的时间太短看不出来灯亮
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-8-11
在线时间
19 小时
发表于 2017-4-11 08:10:57 | 显示全部楼层
133244 发表于 2017-4-11 08:09
有没有可能延时太短或者没有延时,灯亮的时间太短看不出来灯亮

   case 1:        //控制LED0翻转
                                         LED1(OFF);
                                          delay_ms(500);
试下看行不
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 05:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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