stm32f103 学习笔记 —— 03 通过IDR循环检测实现按键检测

本文介绍了一种基于STM32微控制器的按键检测方法,通过配置GPIO输入浮空模式并利用IDR寄存器循环检测按键状态。该方法适用于需要简单可靠按键输入的应用场景。
1.通过IDR寄存器循环检测

bsp_key.h

#ifndef __BSP_KEY
#define __BSP_KEY

#include“stm32f10x.h”

#define GPIO_KEY1_PORT GPIOA 
#define GPIO_KEY1_PIN GPIO_Pin_0
#define GPIO_KEY1_CLK RCC_APB2Periph_GPIOA

#define KEY_ON 1
#define KEY_OFF 0

void GPIO_KEY1_CONFIG(void);
void GPIO_KEY2_CONFIG(void);
uint8_t KEY_SCAN(GPIO_TypeDef * GPIOx,uint16_t GPIO_Pin);

#万一

bsp_key.c

#include“bsp_key.h”

// GPIO初始化函数
void GPIO_KEY1_CONFIG(void)
{
  GPIO_InitTypeDef GPIO_KEY1_InitStruct;
	
	RCC_APB2PeriphClockCmd(GPIO_KEY1_CLK,ENABLE);
	
	GPIO_KEY1_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_KEY1_InitStruct.GPIO_Pin = GPIO_KEY1_PIN;
	GPIO_Init(GPIO_KEY1_PORT,&GPIO_KEY1_InitStruct);
	
}
//按键检测
uint8_t KEY_SCAN(GPIO_TypeDef * GPIOx,uint16_t GPIO_Pin)
{
	如果(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)== KEY_ON)
	{
	        //抬手检测
		(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)== KEY_ON);
			返回KEY_ON;
	}
	否则返回KEY_OFF;
}

main.c中

#include“stm32f10x.h”
#include“bsp_led.h”
#include“bsp_key.h”

int main(void)
{
	GPIO_LED_CONFIG();
	GPIO_KEY1_CONFIG();
	GPIO_KEY2_CONFIG();
while(1)
 {
 if(KEY_SCAN(GPIO_KEY1_PORT,GPIO_KEY1_PIN)== KEY_ON)	
			    
                  GPIO_LED_TOGGLE; }		
	
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值