杰理AC696N开发分享——ADKEY按键长按触发时间
2026年06月05日 14:59 发布者:清月芯世界
引言做蓝牙音箱类的PCB设计绝对少不了按键,无论是实体物理按键还是触摸按键,都需要控制模块更换模式或者音量加减和音乐的上/下曲,更加分为长按和短按,唯独长按部分在软件设计的时候容易出错,长按的触发时间长短的区分,时间一长也许就没反应了。复现:设计过程反馈长按时间设置成8s没反应,75改成 大于240就无效, 小于240就有效。达不到8秒的效果。
分析解决
首先设置长按时间的位置如图:
https://ima-notebook-prod.image.myqcloud.com/2/d3kbCeYD2DyOJFf58fofxe/file_manager/019e91f2c6f1704e9ae6f63e43e65578.png?q-sign-algorithm=sha1&q-ak=AKID9IDtLZZKqGRO7hVFnMn0zjXTXovoTtAN&q-sign-time=1780631187%3B1780659987&q-key-time=1780631187%3B1780659987&q-header-list=&q-url-param-list=&q-signature=c663cf3422613685b006a87887c928345d36d32e
在这里改动long_time这个结构体成员即可,在改动过大时,他还是大概3秒的效果;这时我们想实现更长的触发时间我们可以通过计数的方式实现这种效果在hold下创建新的宏去处理KEY_POWEROFF的事件
https://ima-notebook-prod.image.myqcloud.com/2/d3kbCeYD2DyOJFf58fofxe/file_manager/019e91f391a475aeaae321b607bf6089.png?q-sign-algorithm=sha1&q-ak=AKID9IDtLZZKqGRO7hVFnMn0zjXTXovoTtAN&q-sign-time=1780631187%3B1780659987&q-key-time=1780631187%3B1780659987&q-header-list=&q-url-param-list=&q-signature=c3f6534a9d0c0cc20cf6aad0f9a9b474293e0b5e
初始化变量
https://ima-notebook-prod.image.myqcloud.com/2/d3kbCeYD2DyOJFf58fofxe/file_manager/019e91f3d3a17aa9afec41ca908fee93.png?q-sign-algorithm=sha1&q-ak=AKID9IDtLZZKqGRO7hVFnMn0zjXTXovoTtAN&q-sign-time=1780631187%3B1780659987&q-key-time=1780631187%3B1780659987&q-header-list=&q-url-param-list=&q-signature=ad864d72e51f32485de2a6092cd2eeedc1672c2c
KEY_POWEROFF不做处理,通过新创建的KEY_POWEROFF_HOLD去处理关机事件,通过计数的方式判断按下一段时间后触发对应函数,在抬起时再重置计数
https://ima-notebook-prod.image.myqcloud.com/2/d3kbCeYD2DyOJFf58fofxe/file_manager/019e91f49698787eb1fe29dc0a5996bb.png?q-sign-algorithm=sha1&q-ak=AKID9IDtLZZKqGRO7hVFnMn0zjXTXovoTtAN&q-sign-time=1780631187%3B1780659987&q-key-time=1780631187%3B1780659987&q-header-list=&q-url-param-list=&q-signature=2aaeef3d575d045814e1d67e13cdeac9ba1dba94
先在开发板上用标准ADKEY电阻验证参数,再移植到产品板。注意添加软件去抖动滤波,避免电压波动导致误触发或连击。
