第三篇 STM32CubeMX创建STM32工程之GPIO按键输入检测实验

第三篇 STM32CubeMX创建STM32工程之GPIO按键输入检测实验

一、GPIO输入引脚定义与配置

单片机引脚做输入有很多种模式,比如普通的外部输入,还有外部中断输入等等,小编主要介绍两种常用的,一种是普通的input,另一种就是外部中断输入。本文主要讲解普通的gpio输入。
1.GPIO设置引脚为输入模式
同设置输出引脚模式相同,选择System Core→GPIO,在右侧芯片对应引脚左键,将引脚选择为GPIO INPUT模式,小编选用的是PB12。
在这里插入图片描述

2.定义引脚相关参数

此时,中间位置出现设置的引脚,选择PB12,设置引脚上下拉我是,这里有三种选择,默认状态是不上拉也不下拉,我们选择的是上拉,还有一种模式是下拉。最后重定义一下引脚名称。
在这里插入图片描述
注:上拉(Pull Up )或下拉(Pull Down)电阻(两者统称为“拉电阻”)最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉)

二、GPIO按键检测编程

1.通过按键实现数值的自加
配置完成后打开工程,编写按键检测程序,程序结构还是使用小编之前的结构,在user.c中编写程序。按键检测使用到hal库的gpio读取函数

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

该函数有两个参数,第一个选择用哪一组引脚,这里小编使用的是B,第二参数是引脚编号,小编选用的是12,函数返回当前引脚的状态。
注:因为小编在配置工程时给引脚做了重定义,因此参数一和参数二为

HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)

整体代码:

#include "user.h"
#include "gpio.h"                                              //引入gpio头文件
void user_main(void)
{
	uint32_t x;
	while(1)
	{
		if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
		{
			HAL_Delay(20);
			if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
			{
				x++;
			}
		}
		
	}
}

因为,引脚配置的是上拉模式,所以当检测到低电平时执行自加命令,这里小编使用两次HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)函数是为了祛除机械抖动。

本篇文章到此结束,有疑问欢迎留言咨询,小编每天都会更新,如果有学习比较快想看后边的也可以联系我,谢谢,感谢大家阅读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值