按键检测

硬件连接

按键1连接线路

main.c

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>

#include "bsp_led.h"
#include "bsp_key.h"

int main(void)
{
	LED_GPIO_Config();		//LED灯初始配置
	KEY_GPIO_Config();		//KEY1初始化
	while(1)
	{
		if ( KEY_Scan(KEY1_GPIO_PORT, KEY1_GPIO_PIN) == KEY_ON )
		{
			LED_G_TOGGLE;
		}
	}
}

bsp_key.h

#ifndef __BSP_KEY_H
#define __BSP_KEY_H

#include "stm32f10x.h"

#define KEY1_GPIO_PORT       GPIOA					//按键1端口
#define KEY1_GPIO_PIN        GPIO_Pin_0				//按键1引脚				
#define KEY1_GPIO_CLK        RCC_APB2Periph_GPIOA	//按键1时钟使能寄存器

#define KEY_ON			1
#define KEY_OFF			0

void KEY_GPIO_Config(void);
uint8_t KEY_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

#endif /* __BSP_KEY_H */

bsp_key.c

#include "bsp_key.h"
/*
bsp表示Board Support Packet,表示板级支持包,适用于特定板,移植时需要注意根据硬件接口做一定调整。
本文件适用于野火指南者开发板,KEY1的接口为PA0, KEY2的接口为PC13。
*/

void KEY_GPIO_Config(void)
{
	GPIO_InitTypeDef 		 GPIO_InitStruct;        //定义GPIO结构体
	
	RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK, ENABLE); 
	/*打开GPIO的时钟,第一个参数是要打开哪个GPIO口的时钟,
   	第二个参数为ENABLE时即是使能,即打开。*/
	
	/*-------配置按键IO口---------*/
	GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN;      			//配置IO口引脚
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;		//配置为浮动输入
	GPIO_Init(KEY1_GPIO_PORT , &GPIO_InitStruct);			//GPIO口初始化
}

uint8_t KEY_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
	if( GPIO_ReadInputDataBit( GPIOx, GPIO_Pin) == KEY_ON )
	{
		while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin) == KEY_ON );	//松手检测
		return KEY_ON;
	}
	else 
		return KEY_OFF;
}

bsp_led.h 及 bsp_led.c

点亮LED灯(固件库版)

代码参考野火教程,有所修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值