Button驱动包括两层:通用定时器(GPT)的硬件访问层(HAL)和RT-Thread的适配层。
硬件访问层提供访问 GPT 外设寄存器的基本 API。 有关详细信息,请参阅 GPT 的 API 文档。
适配层提供对 RT-Thread 驱动框架的支持。 用户可以使用 RT-Thread POSIX 驱动程序接口进行音频编程。 请参阅 RT-Thread 驱动程序的 API 文档。
主要功能包括:
- 最多支持 4 个按钮。
- 支持长按和双击。
- 支持 LVGL 图形库。
驱动配置
Button驱动使用 GPT 实现. GPT的通道可以使用menuconfig 选择,通常保存在 C 头文件中。 默认情况下,配置保存为 rtconfig.h。
下面时一个配置的示例,工程使用GPT2, 支持长按和双击。
#define USING_BUTTON_LIB
#define BUTTON_MAX_NUM 2
#define BUTTON_ADV_ACTION_CHECK_DELAY 3000
#define BSP_USING_BUTTON
#define BSP_USING_GPT2_BUTTON
#define SINGLE_AND_DOUBLE_TRIGGER
#define BUTTON_DEBOUNCE_TIME 2
#define BUTTON_CONTINUOS_CYCLE 1
#define BUTTON_LONG_CYCLE 1
#define BUTTON_DOUBLE_TIME 15
#define BUTTON_LONG_TIME 50
配置完成后,用户需要在所有需要访问驱动程序的源代码中包含头文件。
使用Button驱动程序
适配器层注册 RT-Thread 请求的硬件支持功能,并使用 GPT2 实现这些功能。 GPT HAL 公开的 Hardware Timer 。 对于使用 RT-Thread 按钮设备的用户,可以使用以下代码作为示例:
rt_device_t g_t_button = rt_device_find("keypad");
rt_device_open(g_t_button, RT_DEVICE_OFLAG_RDONLY);
uint32_t buffer[2];
rt_device_read(g_t_button, 0, buffer, sizeof(buffer));
printf("Key:%d", buffer[0]);
printf("Stated:%d", buffer[1]);