按键
源码路径:example/misc/button
支持的平台
em-lb525
em-lb587
概述
按钮库使用引脚设备来检测各种按钮动作。 它使用一个计时器来处理去抖动,而另一个计时器来检测长按动作。
它支持以下操作
按下:按钮被按下
释放:按钮被释放
长按:按钮被按下并保持由
BUTTON_ADV_ACTION_CHECK_DELAY
指定的时间点击:按钮被按下和释放,中间不会触发长按动作
用户可以注册每个按钮的处理程序以在发生任何操作时获得通知。 按钮活动状态是可配置的。
例程的使用
编译和烧录
切换到例程project目录,运行scons命令执行编译(board=版型):
scons --board=em-lb525 -j8
运行build_em-lb525_hcpu\uart_download.bat
,按提示选择端口即可进行下载:
build_em-lb525_hcpu\uart_download.bat
Uart Download
please input the serial port num:5
确认rtconfig.h中包含下面两个宏 支持的最大按键数和长按动作检测阈值由以下宏配置
#define BUTTON_MAX_NUM 2
#define BUTTON_ADV_ACTION_CHECK_DELAY 3000
它们可以在 SiFli Middleware->Enable button library
下配置。 可以在编译界面输入menuconfig
进入
使用按钮库
在下面的示例中,它首先初始化按钮,即将按钮与 pin 设备绑定并注册按钮动作处理程序。 然后启用按钮检测,即启用引脚 IRQ。
硬件连接
注意:587引脚分A,B组,B组管脚数要加上96
54+96->150
56+96->152\
button52
button587
按键引脚参数修改
#if defined(BSP_USING_BOARD_EM_LB525XXX)
HAL_PIN_Set(PAD_PA34, GPIO_A34, PIN_PULLDOWN, 1);
HAL_PIN_Set(PAD_PA11, GPIO_A11, PIN_PULLDOWN, 1);
#elif defined (BSP_USING_BOARD_EM_LB587XXX)
HAL_PIN_Set(PAD_PB56, GPIO_B56, PIN_PULLDOWN, 1);
HAL_PIN_Set(PAD_PB54, GPIO_B54, PIN_PULLDOWN, 1);
#endif
例程输出结果展示:
log输出:
button:34,0
button:34,3
button:34,1
button:11,0
button:11,3
button:11,1
0,1,2,3状态的action代表的含义:
action:
BUTTON_PRESSED = 0, Indicates that a button is pressed
BUTTON_RELEASED = 1, Indicates that a button is released
BUTTON_LONG_PRESSED = 2, Indicates that a button is long released
BUTTON_CLICKED = 3, Indicates that a button is clicked
注意:
中断处理函数可以在startup_bf0_hcpu.S中查看
HAL_PIN_Set 最后一个参数为hcpu/lcpu选择, 1:选择hcpu,0:选择lcpu
异常诊断
按键按下没有预期打印结果,可以从以下方面进行故障排除:
硬件连接是否正常
管脚配置(尤其是管脚的模式配置)是否正确
更新记录
版本 |
日期 |
发布说明 |
---|---|---|
0.0.1 |
10/2024 |
初始版本 |
0.0.2 |
12/2024 |
2.0 |