STM32_配置按键key

 程序代码

/*实现按键点亮红灯,熄灭红灯转换,即按一下亮,再按一下灭*/
#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_exti.h" #include "led.h" #include "key1.h" void key1(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//时钟外设使能,因为按键的管脚在GPIOA的外设下,所以是配置GPIOA GPIO_InitTypeDef gpio; //定义结构体变量 gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; //配置GPIO管脚工作状态为浮空输入 gpio.GPIO_Pin = GPIO_Pin_0; //选择GPIO的第0个引脚 gpio.GPIO_Speed = GPIO_Speed_50MHz; //设置管脚的速率为50MHz GPIO_Init(GPIOA,&gpio); //GPIO初始化 //点亮红灯,此函数在LED.H文件里头 RED_ON //定义一个记录按键之前状态的变量 pre char pre =0; while(1) { //把GPIOA_pin_0管脚的值读取出来,也就是按键的状态值,赋给states int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); //如果按键按下,且按键之前的状态值是松开的,实际上是为了避免按键一直按着,不能准确的判断出LED的状态 if(states == 0 && pre == 1) { //读取GPIOB_pin_5管脚的状态数据,如果它是低电平,即红灯是点亮的 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5) == 0) { //熄灭红灯 RED_OFF }else { //否则,亮红灯 RED_ON } } //把当前的按键状态赋给pre,作为下一次的之前状态 pre = states; } }

 

posted on 2017-12-11 10:38  梁锦杰  阅读(3073)  评论(0编辑  收藏  举报

导航

欢迎进入我的博客!