zoukankan      html  css  js  c++  java
  • stm32 按键

                                        
    //°´¼ü³õʼ»¯º¯Êý
    void KEY_Init(void) //IO³õʼ»¯
    { 
         GPIO_InitTypeDef GPIO_InitStructure;
        //³õʼ»¯KEY0-->GPIOA.13,KEY1-->GPIOA.15  ÉÏÀ­ÊäÈë IPU
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜPORTA,PORTEʱÖÓ
    
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//PE2~4
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀ­ÊäÈë
         GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE2,3,4
    
        //³õʼ»¯ WK_UP-->GPIOA.0      ÏÂÀ­ÊäÈë  IPD
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;  //PA0ÉèÖóÉÊäÈ룬ĬÈÏÏÂÀ­      
        GPIO_Init(GPIOA, &GPIO_InitStructure);         //³õʼ»¯GPIOA.0
    
    }
    u8 KEY_Scan(u8 mode)
    {     
        static u8 key_up=1;//°´¼ü°´ËÉ¿ª±êÖ¾
        if(mode)key_up=1;  //Ö§³ÖÁ¬°´          
        if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))  //°´ÏÂÈ¥µÄ״̬key
        {
            delay_ms(10);//È¥¶¶¶¯
            key_up = 0;
                 if(KEY0==0)return KEY_RIGHT;
            else if(KEY1==0)return KEY_DOWN;
            else if(KEY2==0)return KEY_LEFT;
            else if(KEY3==1)return KEY_UP;
        } else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;         
           return 0;  // ÎÞ°´¼ü°´ÏÂ
    }
        while(1)
        {
             t=KEY_Scan(0);        
               if(t)
            {                           
                switch(t)
                {                 
                    case KEY_UP:    //µÆÈ«Ã𣬷äÃùÆ÷Ïì2Éù          PA.0¿ØÖÆPB.8
                        LED0=1;
                LED1=1;
                    
                     BEEP = 1;
               delay_ms(100);
               BEEP = 0;
               delay_ms(200);
             BEEP = 1;
             delay_ms(100);
               BEEP = 0;
               delay_ms(200);
                        break;
                      case KEY_LEFT:    //LED0ÉÁÒ»´Î  PE.3¿ØÖÆPE.5
                        LED0=0;
                      delay_ms(200);
                      LED0=1;
                        break;
                      case KEY_DOWN:    //¿ØÖÆLED1·­×ª    PE.2¿ØÖÆPB.5
                        LED1=!LED1;
                        break;
                      case KEY_RIGHT:    //ͬʱ¿ØÖÆLED0,LED1·­×ª PE.4
                        LED0=0;
                      delay_ms(200);
                      LED0=1;
                        break;
                }
            }else delay_ms(10); 
        }     
     }
  • 相关阅读:
    基于vue-cli配置移动端自适应项目
    webpack 之 resolve.alias(别名)
    vue 之引用全局样式
    webpack 3.0
    vue 之 data为什么必须声明为返回一个初始数据对象的函数?
    JS柯里化
    《css设计指南》 读书笔记 二
    《css设计指南》 读书笔记 一
    简单的移动端图片预览 包含放大缩小以及对各种手势的判定
    图片拍照上传 使用fileReader 无需跨域
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/5325398.html
Copyright © 2011-2022 走看看