原理
硬件消抖:
以KEY1为例
当按键没有按下的时候,PA0接地,输入0。
当按键按下的时候,右边的电流通过,经过电容之后逐渐稳定,没有受到按键抖动的影响。
所以要将将引脚设置为上升沿触发。

这个是最简单的按键结构,没有用到硬件消抖,需要软件消抖。
就像是在51单片机里面软件消抖一样,需要延时20ms左右再去判断按键状态。
下面的代码是适用于这个原理图的(正点的板子)。

key.h
#ifndef __KEY_H
#define __KEY_H
#include "stm32f10x.h"
#include "sys.h"
#define KEY_0_GPIO_PIN GPIO_Pin_4/*GPIO引脚*/
#define KEY_0_GPIO_PORT GPIOE/*GPIO端口*/
#define KEY_0_GPIO_CLK RCC_APB2Periph_GPIOE/*GPIO端口时钟*/
#define KEY_0_APBxClock_FUN RCC_APB2PeriphClockCmd/*端口使能*/
#define KEY_1_GPIO_PIN GPIO_Pin_3/*GPIO引脚*/
#define KEY_1_GPIO_PORT GPIOE/*GPIO端口*/
#define KEY_1_GPIO_CLK RCC_APB2Periph_GPIOE/*GPIO端口时钟*/
#define KEY_1_APBxClock_FUN RCC_APB2PeriphClockCmd/*端口使能*/
#define KEY_UP_GPIO_PIN GPIO_Pin_0/*GPIO引脚*/
#define

本文介绍了STM32中GPIO用于按键输入的原理和实现,包括硬件消抖的基本概念,以及在key.h、key.c和main.c文件中的具体代码实现。通过配置GPIO初始化结构体,设置上拉或下拉输入模式,并使用延时函数进行软件消抖,实现对按键状态的稳定检测。在main.c中,根据按键检测结果控制LED灯的状态变化。
最低0.47元/天 解锁文章
1389

被折叠的 条评论
为什么被折叠?



