代码拉取完成,页面将自动刷新
#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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。