STM32_配置按键key

本文介绍了一个简单的STM32程序,通过按键控制红灯的亮灭状态切换。程序使用了STM32F10X系列微控制器,并涉及GPIO初始化、按键检测及LED控制等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 程序代码

/*实现按键点亮红灯,熄灭红灯转换,即按一下亮,再按一下灭*/
#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; } }

 

转载于:https://www.cnblogs.com/liangjinjie/p/8021894.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值