stm32-独立按键

时间有点仓促,写的比较粗糙   先写点上去吧

   前面讲过了io口的设置,按键不过是把io口设置成其他的模式,如果按键接的vcc就将相应io口设置成下拉输入模式,接地就上拉输入模式(没按下的时候就要默认高电平)

然后就和51的时候一样处理抖动,读取状态就行了,我也改成没使用商家给的函数,只使用库函数了

  以下为key驱动

 

#include "key.h"

#include "delay.h"

 

u8 k_past=0,k_now=0;

void KEY_Init()

{

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

   

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//PA15是JTAG用到的引脚,此函数可以关闭JTAG功能把此引脚当成普通引脚

   

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;//PA15为key1

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入

    GPIO_Init(GPIOA,&GPIO_InitStructure);

   

//    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

//    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入

//    GPIO_Init(GPIOC,&GPIO_InitStructure);

//   

//    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

//    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//下拉输入

//    GPIO_Init(GPIOA,&GPIO_InitStructure);

   

}

 

u8 KEY_Scan()

{

    u8 temp;

    temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);

    if(temp==1)

    {

        k_past=k_now;

        k_now=0;

    }

    else if(!(k_past==1&&k_now==1))

    {

        delay_ms(20);

        temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);

        if(temp==0)

        {

            k_past=k_now;

            k_now=1;

            return 1;//1代表按键按下

        }

        else

        {

            k_past=k_now;

            k_now=0;

        }

    }

    return 0;

}

 

以下为mainled和上次一样

#include "led.h"

#include "delay.h"

#include "sys.h"

#include "key.h"

//ALIENTEK Mini STM32开发板范例代码2

//按键输入实验          

//技术支持:www.openedv.com

//广州市星翼电子科技有限公司

 int main(void)

 {   

    delay_init();             //延时函数初始化     

    LED_Init();                   //初始化与LED连接的硬件接口

    KEY_Init();              //初始化与按键连接的硬件接口

    while(1)

    {

        if(KEY_Scan()&&k_past==0&&k_now==1)

        {

            LED0=!LED0;

        }       

    }        

}

以下为

GPIO_PinRemapConfig函数的说明
https://images2015.cnblogs.com/blog/1104670/201707/1104670-20170702204612180-1706380958.jpg

 

猜你喜欢

转载自blog.csdn.net/sinat_30457013/article/details/89383441