原理
硬件消抖:
以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