MultiButton
MultiButton copied to clipboard
Button driver for embedded system
实现多个button 共用读取level函数,共用事件处理函数,不影响老接口使用
可以把按键的事件传入回调里,这样子多个按键,按键里有多个事件,写起来就不需要那么多回调了。
此处建议改为长按UP事件,与SINGLE_CLICK和DOUBLE_CLICK同理。虽然说PRESS_UP事件也没有错,但就像SINGLE_CLICK事件一样,SINGLE_CLICK事件也可以认为是一个PRESS_UP事件。此处触发长按UP事件感觉与实际按键需求更为贴切。
在multi button .c文件 第132 行!!!! 添加 else { handle->state = 0; } 即可解决, 不然会导致长按不生效 !!!!
`void button_init(struct Button* handle, uint8_t(*pin_level)(), uint8_t active_level, uint8_t button_id)` `void button_init(struct Button* handle, uint8_t(*pin_level)(uint8_t), uint8_t active_level, uint8_t button_id)`
如果再加入一个可以通过中断触发button_tick的功能选项就完美了。
第133行是不是想写成 `handle->state = 1;`
按键删除
请问void button_stop(struct Button* handle)这个函数, 在哪将传入的按键删除了, 压根都没看到这个逻辑..