/*

  • 定义一个枚举类型PressEvent,表示按钮的各种事件
  • PRESS_DOWN: 按下按钮
  • PRESS_UP: 松开按钮
  • PRESS_REPEAT: 按钮重复按下
  • SINGLE_CLICK: 单击按钮
  • DOUBLE_CLICK: 双击按钮
  • LONG_PRESS_START: 长按按钮开始
  • LONG_PRESS_HOLD: 长按按钮持续
  • number_of_event: 事件数量
  • NONE_PRESS: 无按钮事件 */ typedef enum { PRESS_DOWN = 0, PRESS_UP, PRESS_REPEAT, SINGLE_CLICK, DOUBLE_CLICK, LONG_PRESS_START, LONG_PRESS_HOLD, number_of_event, NONE_PRESS }PressEvent;

/*

  • 定义一个结构体Button,表示按钮的属性和回调函数
  • ticks: 按钮按下的时长
  • repeat: 按钮重复次数
  • event: 按钮事件
  • state: 按钮状态
  • debounce_cnt: 按钮抖动计数
  • active_level: 按钮活动电平
  • button_level: 按钮电平
  • button_id: 按钮ID
  • hal_button_Level: 获取按钮电平的函数指针
  • cb: 按钮事件回调函数数组
  • next: 下一个按钮的指针 */ typedef struct Button { uint16_t ticks; uint8_t repeat : 4; uint8_t event : 4; uint8_t state : 3; uint8_t debounce_cnt : 3; uint8_t active_level : 1; uint8_t button_level : 1; uint8_t button_id; uint8_t (hal_button_Level)(uint8_t button_id_); BtnCallback cb[number_of_event]; struct Button next; }Button;
给下面的C语言添加详细的注释typedef enum 	PRESS_DOWN = 0	PRESS_UP	PRESS_REPEAT	SINGLE_CLICK	DOUBLE_CLICK	LONG_PRESS_START	LONG_PRESS_HOLD	number_of_event	NONE_PRESSPressEvent;typedef struct Button 	uint16_t ticks;

原文地址: https://www.cveoy.top/t/topic/i3xk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录