当前位置: 首页 > news >正文

杰理芯片SDK开发-AD697N添加按键触摸提示音功能教程

前言

到现在为止也开发了许多杰理TWS蓝牙耳机项目SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习;

本章详细讲解杰理AD697N芯片按键触摸提示音实现方法

在调试一个TWS蓝牙耳机案子时,按键通常是我们必须要添加的功能,通过按键我们可以实现音量的增大/减少,歌曲的播放/暂停,曲目的切换,开机/关机等特定功能;所有我们必须在按键按下是添加提示音,有提示音的存在方便我们更好的感知按键的状态;在杰理SDK中有非常多可以实现按键提示音的方法。这里出一个常用稳定实现按键提示音的方法;

配置步骤:

1、在audio_key_tone.c文件中找到三个函数:
函数1:int audio_key_tone_play_name(const char *name, u8 preemption)
函数2:int audio_key_tone_play_index(u8 index, u8 preemption)
函数3:void audio_key_tone_play(void)
这3个函数是一环嵌套一环,紧密配合实现最终的提示音播放,接下来详细分析函数;(其实实现按键触摸音不止这三个函数配合,可以一直往深处去挖。本章就想让大家学会如何实现按键触摸音功能)

函数1:int audio_key_tone_play_name(const char *name, u8 preemption)
功能:通过文件名直接播放指定音频文件(例如:"key.WAV")
参数:
const char name:音频文件路径(需确保文件已烧录至设备存储,如Flash或SD卡)。
u8 preemption:播放模式控制(1为抢断当前音频立即播放,0为叠加播放)。
返回值return: 为0表示成功,非0通常为错误;

函数2: audio_key_tone_paly_index(u8 index, u8 preemption)
功能:通过索引号播放预定义文件的提示音(索引映射到具体文件名)。
参数:
index:提示音索引(范围)对应着序号对应表如下图所示

u8 preemption:播放模式控制(1为抢断当前音频立即播放,0为叠加播放)。
内部逻辑:
索引有效性检查:若index >= KTONE_IDEX_MAX则直接返回-1,错误
有效索引时,则通过函数1int audio_key_tone_play_name(const char *name, u8 preemption)播放按键提示音文件;

函数3:audio_key_tone_play(void)
功能:默认按键提示音播放入口函数(无参数,直接触发播放)。


2、现在开始配置提示音文件,配置触摸提示音文件我们需要将触摸提示音文件放入到芯片中使用配置工具放入,如图所示,放入了一个名为" key.WAV " 文件;


3、放入完成后,需在SDK中进行声明该按键提示音文件,如所示在枚举中添加定义,并且该定义对应着数组中的指定文件;


4、在板级配置文件中对该两个宏定义进行使能;


5、在SDK中放入按键提示音播放函数,一般都是放在lp_touch_key.c文件中p33_ctmu_key_event_ird_handler函数中

配置完成了,将SDK烧录进耳机板或者开发板中就可以观察出按键按下是有触摸音出现;


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

http://www.jsqmd.com/news/241272/

相关文章:

  • 1.13草花互动面试
  • 芯片验证工程师的写代码能力不是第一位
  • IAR软件编译选项设置深度剖析与优化建议
  • JFlash烧录固件的完整指南与调试技巧
  • 断言:让芯片设计工程师又爱又恨
  • 尾调用搞懂了,JS性能直接起飞?前端人别再被面试官问懵了!
  • 程序员如何在技术变革中保持竞争力
  • FileMasterPro v1.2.5:全能多功能文件管理工具
  • C#热更原理:为何原生不支持DLL替换?
  • Winhance v26.01.12 便携版:Windows 系统优化工具
  • 2026年安徽省职业院校技能大赛(高职组) 电子数据取证与分析(学生赛)样题任务书
  • 抗干扰PCB工艺设计:工业电子一文说清
  • Go进阶之协程
  • 2026年安徽省职业院校技能大赛(高职组) 电子数据取证与分析(学生赛)赛项规程
  • Vue.js 前端开发实战 ( 电子版 ) —— 黑马
  • 波长分割复用 + 无源分光:单纤双向如何撑起全光接入?
  • 基于真实项目的KeilC51与MDK双环境部署教程
  • STM32中I2C重入问题与中断处理图解说明
  • 从零实现Keil5 Debug调试工程配置全过程
  • 从零实现STM32高精度定时的时钟树设置
  • AgentCPM-Explore开源,4B 参数突破端侧智能体模型性能壁垒
  • Keil安装教程图解说明:从下载到环境部署全流程
  • 从零开始搭建工控平台:STLink驱动安装操作指南
  • CMSIS底层初始化流程详解:系统学习手册
  • AUTOSAR架构图基础讲解:手把手认识经典平台结构
  • 提示工程架构师:设计灵活的AI提示系统反馈与响应机制
  • ego1开发板大作业vivado实现交通灯控制系统图解说明
  • 前后端分离房屋租赁管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 价值投资中的智能农业灌溉优化系统分析
  • 企业级养老智慧服务平台管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】