STM32-按键的板级支持包

对于按键的板极支持包,初始化GPIO(配置为的输入,读取GPIO引脚的电平)

读取按键是否被按下,也就是按键的状态

按键使用PA0和PC13引脚

先创建bsp_key.c和bsp_key.h文件

 把bsp_key.c添加到工程中

bsp_key.h编写过程

在这个文件里定义好可以执行的函数,引脚状态

#ifndef _BSP_KEY_H_
#define _BSP_KEY_H_
//引入这个头文件,才能访问HAL函数库
#include "stm32f1xx.h"
//宏定义表示按键状态
#define KEY_ON 1;
#define KEY_OFF 0;

//初始化KEY对应GPIO引脚
void KEY_GPIO_Init(void);
//判断按键状态,自定义2个参数类型,哪个引脚,以及引脚号,有返回值,便于判断状态
 uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);

#endif

bsp_key.c编写过程


#include "./key/bsp_key.h"

void KEY_GPIO_Init(void)
{
GPIO_InitTypeDef KEY_GPIO_Init;
	//因为用到了PA0和PC13脚,要让这两个端口使能
//使能PA0引脚
	__HAL_RCC_GPIOA_CLK_ENABLE();
//使能PC13引脚
	__HAL_RCC_GPIOC_CLK_ENABLE();

//stm32f1xx_hal_gpio.h第116行
//#define  GPIO_MODE_INPUT      0x00000000u   /*!< Input Floating Mode                   */
//设置引脚功能
KEY_GPIO_Init.Mode=GPIO_MODE_INPUT;
	KEY_GPIO_Init.Pin=GPIO_PIN_0;
	KEY_GPIO_Init.Pull=GPIO_NOPULL;
	KEY_GPIO_Init.Speed=GPIO_SPEED_FREQ_LOW;
	//初始化2个GPIO引脚
	HAL_GPIO_Init(GPIOA,&KEY_GPIO_Init);
	KEY_GPIO_Init.Pin=GPIO_PIN_13;
	HAL_GPIO_Init(GPIOC,&KEY_GPIO_Init);
}
//编写判断按键是否按下的函数
uint8_t Key_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
	//判断按键是否被按下,找这个方法可知,GPIO_PIN_SET表示高电平
if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==GPIO_PIN_SET){
//按键被按下
	while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==GPIO_PIN_SET);
return KEY_ON;

}else{
//按键未被按下
return KEY_OFF;
}

}

在main.c中完成所需的功能

		if(Key_Scan(GPIOA,GPIO_PIN_0)== KEY_ON)
			LED_B_Toggle;
		if(Key_Scan(GPIOC,GPIO_PIN_13)==KEY_ON)
			LED_G_Toggle;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值