key.h

来自「按键是比较复杂。可以用状态机表示。 每10mS执行一次键盘扫描任务 0、无」· C头文件 代码 · 共 45 行

H
45
字号
/**
  ******************************************************************************
  * @file key.h
  * @brief This file contains functions prototypes.
  * @author ifree64 - stm8 手持示波表开源项目组
  * @version V0.1.0
  * @date 03/25/2009
  ******************************************************************************
  *
  * free for use
  *
  ******************************************************************************
  */

#ifndef _KEY_H_
#define	_KEY_H_

#include "stm8s.h"

/* *******************************************************************************
 * keycode格式:   D7 D6 D5 D4 D3 D2 D1 D0
 *                M1 M0 K5 K4 K3 K2 K1 K0
 *  M1:M0 表示按键类型, 01 普通  10 长按键  11 连发按键
 *  K5:K0 按键编号 总共可以支持2^6 - 1 = 63个按键
 * *******************************************************************************/
#define KTYPE_NO        0x00
#define KTYPE_NORMAL    (1<<6)
#define KTYPE_LONG      (2<<6)
#define KTYPE_LIANFA    (3<<6)

#define KTYPE_MASK	0xC0
#define KCODE_MASK	0x3f

// 按键使用的GPIO端口,8个独立按键,不同接法需要修改KEY_Read函数
#define KEY_PORT	(GPIOD)
#define KEY_PIN     (GPIO_PIN_7)
                    
extern void KEY_Init(void);			// 按键初始化
extern u8 KEY_Scan(void);			// 10ms调用1次,返回按键值
#define GET_KTYPE(k)	((k)&KTYPE_MASK)	// 获取按键类型
#define GET_KCODE(k)	((k)&KCODE_MASK)	// 获取按键值

#endif	/*_KEY_H_*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?