单片机的按键处理程序

这个博客主要介绍了如何在STM32单片机上实现按键的初始化、扫描和状态获取。提供了两个按键的处理函数,分别用于左键和右键的扫描,通过连续触发次数判断按键是否被按下,确保了按键操作的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ifndef _KEY_H_
#define _KEY_H_

#include "stm32f10x_conf.h"
#include "delay.h"
#include "hardware_inc.h"
#include "includes.h"
#include "stdbool.h"




typedef struct
{
	u8 trg;			//触发标志位
	u8 cont;			//计数标志位
}KEY_STATUS;

typedef struct
{
	_Bool left_trg;			//左按键触发标志位
	u8 ltmr;						//左按键定时器
	u8 lcnt_trg;				//左按键模拟队列
	_Bool right_trg;		//右按键触发标志位
	u8 rtmr;						//右按键定时器
	u8 rcnt_trg;				//右按键模拟队列
}KEY_TRG;


void Key_Init(void);
u8 Key_Scan(KEY_STATUS * key);
void Get_Key_Status(KEY_TRG* key_trg);

#endif
#include "key.h"

/*!
*	\fn:	Key_Init 
*	\brief:	按键接口初始化
*	\param:  [in] void 
*	\return:	 void 
*	\date:	2016/11/10
*/
void Key_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);

	//Configure pin as input 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值