新闻详情

新闻详情

首页 / 资讯中心 / 详情

中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现

发布时间:2026/11/14 5:10:37来源:尧图网络
中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现
前言到现在为止也开发了许多杰理TWS蓝牙耳机项目SDK的案子在调试案子时不断的向前辈们学习到了很多关于蓝牙TWS耳机专业的知识。想在这里做一个学习汇总方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习本章详细讲解中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现在调试一个TWS蓝牙耳机案子时按键通常是我们必须要添加的功能通过按键我们可以实现音量的增大/减少歌曲的播放/暂停曲目的切换 开机/关机等特定功能所有我们必须在按键按下是添加提示音有提示音的存在方便我们更好的感知按键的状态在中科蓝讯SDK中有非常多可以实现按键提示音的方法。这里出一个常用稳定实现按键提示音的方法本章实现步骤为1、按键触摸音功能开关config.h2、按键触摸音消息定义key_scan.h3、按键触摸音触发key_scan.c— 核心触发点4、消息分发处理func.c5、音频资源映射资源索引res_tbl.h6、 资源地址表multi_lang.c7、编译时资源拷贝copy_tone.xm8、SDK 还提供了另一种纯 Tone 方式步骤1按键触摸音功能开关config.h本人实现某个功能时一般都喜欢使用宏去控制这个功能方便我排查问题和控制功能的实现实现触摸按键音功能开关设置为1开启按键音功能设置为0则关闭。整个实现链路上的所有代码都用#if LYF_USER_KEY_TONE_EN包裹编译时条件决定是否参与编译零开销。步骤2按键触摸音消息定义key_scan.h在消息枚举中定义了一个专属消息MSG_LYF_USER_KEY_TONE这是按键音在整个系统中的消息标识符。设计思路SDK 采用消息驱动架构——所有事件按键、蓝牙状态变化等都以消息的方式入队然后在主循环中统一分发处理。按键音作为一个独立的消息类型遵循了相同的架构模式。步骤3按键触摸音触发key_scan.c— 核心触发点在按键扫描函数中获取按键刚按下时就发送按键触摸音消息触发时机按键事件类型含义是否触发按键音KEY_SHORT按键刚按下下降沿检测✅ 是KEY_SHORT_UP按键抬起短按❌ 否KEY_LONG长按到达阈值❌ 否KEY_LONG_UP长按后抬起❌ 否KEY_HOLD连按按住不放❌ 否KEY_DOUBLE/KEY_THREE等双击/三击等❌ 否关键设计精髓按键音只在按键按下瞬间触发KEY_SHORT而不是在按键抬起或长按触发时。这意味着✅ 按下就响给用户即时反馈✅ 无论后续是短按/长按/双击按下就有声音步骤4消息分发出处理func.c所有的msg消息都是通过一个先进先出的队列进行存储的用msg_enqueue()接口添加消息然后在主程序的消息处理函数中调用msg_dequeue()取出消息处理不同模式下都会有自己的一个消息处理函数。该消息处理函数只是一个简单的switch判断根据取出的不同消息值去执行case对应的代码。需要注意的是SDK中有一个公共的消息处理函数都在default中执行。使用msg_enqueue()接口添加按键消息在蓝牙模式下按键的单击、双击事件会在这个函数中处理按键事件但是我不在这里进行触摸音播放处理。我在SDK公共的消息处理函数中处理步骤5音频资源映射资源索引res_tbl.h在提示音资源索引枚举中添加RES_IDX_KEY_TONE作为按键音资源的唯一 ID。步骤6资源地址表multi_lang.c将RES_IDX_KEY_TONE映射到一个 WAV 格式的音频资源KEY。宏展开后大致相当于RES_BUF_WAV(KEY)→ 编译时生成的 WAV 数据首地址例如RES_BUF_KEY_WAVRES_LEN_WAV(KEY)→ 编译时生成的 WAV 数据长度例如RES_LEN_KEY_WAV这里的底层宏定义在res_tbl.h末尾所以RES_BUF_WAV(KEY)最终拼接为(RES_BUF_KEY_WAV)指向 flash 中存储的 WAV 二进制数据。步骤7编译时资源拷贝copy_tone.xm在编译流程的预处理阶段GCC 用-E -P预处理此.xm文件生成.bat批处理脚本将key.wav从res_tone目录拷贝到res目录然后编译链接器将 WAV 文件嵌入 firmware 镜像。在res_tone提示音资源仓库中放入key.wac提示音音源文件编译流程的预处理阶段会自动把key.wav从res_tone目录拷贝到res目录这样我们按键触摸音功能就顺利实现了SDK 还提供了另一种纯 Tone 方式从 api_music.h 可以看到SDK 还提供了一个不依赖 WAV 资源文件的纯 tone 生成接口这是用DSP 直接生成正弦波/方波的方式播放按键音不需要预先准备 WAV 文件。当前项目选择的是 WAV 资源方式是因为可以播放更丰富的音效如自定义的音乐按键音而不是单调的单频 嘀 声。制作不易喜欢的小伙伴给个小赞赞喜欢我的小伙伴点个关注有不懂的地方和需要的资源随时问我哟
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/13 13:31:48

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/13 16:11:45

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉