2 Star 35 Fork 24

方舟/MultiButton

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
multi_button.h 1.49 KB
一键复制 编辑 原始数据 按行查看 历史
方舟 提交于 2019-01-08 12:53 . 更新 multi_button.h
#ifndef _MULTI_BUTTON_H_
#define _MULTI_BUTTON_H_
#include "stdint.h"
#include "string.h"
//According to your need to modify the constants.
#define TICKS_INTERVAL 5 //ms
#define DEBOUNCE_TICKS 3 //MAX 8
#define SHORT_TICKS (300 /TICKS_INTERVAL)
#define LONG_TICKS (1000 /TICKS_INTERVAL)
typedef void (*BtnCallback)(void *,uint8_t);
typedef enum {
BTN_UNPRESS = 0,
BTN_PRESSED = 0x01,
PRESS_DOWN = 0x02,
PRESS_UP = 0x04,
PRESS_REPEAT = 0x08,
SINGLE_CLICK = 0x10,
DOUBLE_CLICK = 0x20,
LONG_RRESS_START = 0x40,
LONG_PRESS_HOLD = 0x80,
number_of_event = 9,
}PressEvent;
typedef struct Button {
struct Button* next;
uint16_t ticks;
uint8_t event ;
uint8_t repeat : 4;
uint8_t state : 3;
uint8_t debounce_cnt : 3;
uint8_t button_level : 1;
uint8_t (*hal_button_Level)(void);
BtnCallback cb;
}Button;
#ifdef __cplusplus
extern "C" {
#endif
void button_init(void);
/**
* @brief Button driver core function, driver state machine.
* @param handle: the button handle strcut.
* @param pin_level: the button status 0:NONE_PRESS 1:BTN_PRESSED.
* @param cb: the button press call function.
* @param event: the button event trigger mask.
* @retval None
*/
void button_attach(struct Button* handle, uint8_t(*pin_level)(), BtnCallback cb, PressEvent event);
PressEvent get_button_event(struct Button* handle);
int button_start(struct Button* handle);
void button_stop(struct Button* handle);
void button_ticks(void);
#ifdef __cplusplus
}
#endif
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/chenx_ark/MultiButton.git
git@gitee.com:chenx_ark/MultiButton.git
chenx_ark
MultiButton
MultiButton
master

搜索帮助