dc32-retro-tech-addon/firmware/retro_tech_fw/user/src/btn.h

61 lines
1.0 KiB
C
Raw Normal View History

/*
* btn.h
*
* Created on: Jul 27, 2024
* Author: true
*/
#ifndef USER_SRC_BTN_H_
#define USER_SRC_BTN_H_
#define BTN_COUNT 2
#define BTN_DEBOUNCE (12 >> 1) // debounce time in 2ms
#define BTN_PORT GPIOC
#define BTN_MODE 0x80
#define BTN_PULL_UP (1 << 0)
#define BTN_PULL_DOWN (1 << 16)
#define BTN_ACTIVE_LO 0x10
#define BTN_PIN_MASK 0x0f
#define BTN1_PIN 5
#define BTN1_PUPD BTN_PULL_UP
#define BTN2_PIN 4
#define BTN2_PUPD BTN_PULL_DOWN
#define BTN_PUSH (1 << 0)
#define BTN_HOLD (1 << 1)
#define BTN_RELEASE (1 << 2)
#define BTN_IGNORE (1 << 3)
typedef struct Btn {
uint8_t _mask;
uint8_t _pintype;
uint16_t _count; // held counts
uint16_t hold; // initial hold
uint16_t repeat; // repeated hold
void (*cb_push)(uint8_t);
void (*cb_hold)(uint8_t);
void (*cb_release)(uint8_t);
} Btn;
extern struct Btn btn[BTN_COUNT];
void btn_init();
void btn_poll();
#endif /* USER_SRC_BTN_H_ */