按键实验

2019-07-20 15:24发布

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;// 无按键按下
}   

灯就是不能亮 真的很奇怪

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。