CH59x CH58x 触摸按键应用开发实例讲解(二)

CH592/CH582 触摸按键应用开发实例讲解 写这篇文章,更多的意义是记录自己对官方提供的样例程序的 理解及修改的一些体会,毕竟我们的项目几乎只是在样例程序上略作修改,并增加了一些自己需要的功能,如此而已。如果能对大家有那怕一点点帮助,纯属意外之喜。 阅读详情

前段时间,我们根据当时在做的一个项目,写了篇《CH592/CH582 触摸按键应用开发实例讲解》的博文,在那篇博文中我们简单介绍了触摸按键的原理,所以这里我们就讲触摸按键的原理,而侧重讲解触摸按键的实现,官方提供的触摸库的添加及应用。

想要了解触摸按键的原理的朋友可以自行搜索相关资料,也可以参考我们之前的博文:

CH592/CH582 触摸按键应用开发实例讲解-优快云博客

一、在现有工程中添加触摸库

本博文以CH584M为例讲解,我们在官方提供的CH585例程中找到以下目录文件并复制到我们现有的工程目录中。

在工程中设置include目录并添加触摸库。

、

按上图所示添加相应的文件目录并修改设置好工程,那我们就完成了在现有的工程中添加触摸功能的软件框架。

二、初步理解例程中触摸功能的实现

从上图中我们可以看出,使用官方提供的触摸库还是比较简单的,我们需要做的只是简单几个步骤:

1、初始化触摸库的基本参数:

/*********************************************************************
 * @fn      touch_on_TMOS_init
 *
 * @brief   触摸初始化函数(基于TMOS)
 *
 * @return  none
 */
void touch_on_TMOS_init(void)
{
    TouchKey_TaskID = TMOS_ProcessEventRegister(Touch_Key_ProcessEvent);
    TKY_PeripheralInit();       /* 初始外设,例如背光和蜂鸣器等 */
    touch_Init(&touch_cfg);				/* 初始化触摸库  */

    wakeUpCount = 50; // 唤醒后持续时间,单位TRIGGER_TIME(100ms)
    wakeupflag = 1;   // 置成唤醒状态
    triggerTime = TRIGGER_TIME;
    TKY_SetSleepStatusValue(~tkyQueueAll);
#if TKY_SLEEP_EN
    tky_DealData_start();
#else
    tky_DealData_stop();
#endif

#if PRINT_EN
    tmos_set_event(TouchKey_TaskID, DEBUG_PRINT_EVENT);
#endif

    tmos_set_event(TouchKey_TaskID, WAKEUP_DATA_DEAL_EVT);
    tmos_set_event(TouchKey_TaskID, TKY_KEEPALIVE_EVENT);

//    TMR0_TimerInit(FREQ_SYS/1000);               //定时周期为1ms
//    TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END);
//    PFIC_EnableIRQ( TMR0_IRQn );

    dg_log("Touch Key init Finish!\n");
}
/********************************************************************************************************
 * @fn      touch_Init
 * 
 * @brief   初始化按键. 该函数被 TKY_Init() 调用。
 *
 * @return  none
 */
void touch_Init(touch_cfg_t *p)
{
    touch_InitHard();             /* 初始化Touch硬件和库基本参数 */
    touch_InitVar(p);           /* 初始化按键变量 */
}


/********************************************************************************************************
 * @fn      touch_InitHard
 * @brief   初始化触摸按键
 * @param   无
 * @return  无
 */
static void touch_InitHard (void)
{
    touch_Regcfg();
    touch_Baseinit();
    touch_Channelinit();
}

/********************************************************************************************************
 * @fn      touch_Baseinit
 * @brief   触摸基础库初始化
 * @param   无
 * @return  无
 */
static void touch_Baseinit(void)
{
    uint8_t sta=0xff;
    TKY_BaseInitTypeDef TKY_BaseInitStructure = {0};
    for(uint8_t i = 0; i < TKY_MAX_QUEUE_NUM; i++)  //初始化tkyQueueAll变量
    {
        tkyQueueAll |= 1<<i;
    }
    dg_log("tQ : %04x\n",tkyQueueAll);

    //----------触摸按键基础设置初始化--------
    TKY_BaseInitStructure.filterMode = TKY_FILTER_MODE;
    TKY_BaseInitStructure.shieldEn = TKY_SHIELD_EN;
    TKY_BaseInitStructure.singlePressMod = TKY_SINGLE_PRESS_MODE;
    TKY_BaseInitStructure.filterGrade = TKY_FILTER_GRADE;
    TKY_BaseInitStructure.maxQueueNum = TKY_MAX
CH59x/CH58x触摸按键开发实战:从库集成到通道配置详解 本文详细解析了在CH58x/CH59x系列MCU项目中集成官方触摸库并进行通道配置的实战流程。从核心文件移植、工程配置,到关键初始化参数与通道映射的详解,提供了从零集成触摸按键功能的清晰步骤与调试技巧,帮助开发者快速实现稳定可靠的触摸按键应用开发。 阅读详情

相关推荐

CH59x/CH58x 触摸按键库深度优化与多通道配置实战

本文深入探讨了沁恒CH59x/CH58x系列MCU触摸按键库的深度优化与多通道配置实战。针对官方库在复杂应用场景下的不足,文章详细解析了基线校准的动态刷新机制、多通道扩展的资源分配策略,以及针对CH584与CH592等不同型号的引脚映射差异。通过实战参数调优、抗干扰与低功耗设计指导,帮助开发者将触摸按键从“能用”提升到“稳定、可靠、体验好”的“好用”级别,实现精准稳定的触摸应用开发。

n2o3p4的博客 246

CH592/CH582 触摸按键开发实战:从原理到代码优化

本文深入解析了基于沁恒微电子CH592/CH582蓝牙MCU的触摸按键应用开发全流程。从电容触摸原理入手,详细剖析了电流源充电检测方案,并提供了从官方例程裁剪、配置优化到应用层事件处理(单击、长按、双击)的实战代码指南。文章还重点分享了PCB布局、抗干扰设计及功耗优化等硬件实战经验,帮助开发者实现稳定可靠的触摸按键功能。

weixin_28292761的博客 149

沁恒CH58x触摸按键防误触全攻略:驱动屏蔽+密集模式配置详解

本文深入解析了沁恒CH58x系列MCU触摸按键的防误触核心技术。针对潮湿、油污等恶劣环境,详细阐述了驱动屏蔽与密集模式两项关键功能的原理、配置方法及实战调优策略,帮助开发者构建稳定可靠的触摸交互系统,有效提升产品在厨房电器、卫浴产品等场景下的应用体验。

h6j7k8l9p0的博客 496

STM32输液监护系统:临床级滴速测量与闭环调控设计

输液监护是医疗电子中典型的机电协同感知控制问题,其核心在于高精度液滴信号采集、抗干扰实时处理及安全可靠的执行反馈。基于STM32的嵌入式方案需兼顾测量原理(红外反射式传感)、算法实现(硬件滤波+滑动窗口+PID闭环)与临床工程约束(双阈值报警、低功耗、EMC鲁棒性)。相比常见毕业设计中仅用GPIO中断测滴速的简化方案,本系统通过TIM输入捕获、寄存器级裸机调度和TMC2209静音驱动等关键技术,将滴速误差压缩至±0.5滴/分钟,并支持72小时连续稳定运行。适用于医疗器械原型开发、电子类毕业设计及嵌入式实践教

weixin_34007886的博客 356

基于STM32的智能控温水杯设计:硬件、PID与低功耗全解析

温度控制在嵌入式系统中是常见而综合的工程实践,涉及传感器采样、功率驱动、控制算法与低功耗设计等多个环节。STM32凭借丰富外设和灵活的低功耗模式,成为实现精确温控的理想主控平台。通过DS18B20采集温度,结合增量式PID算法调节PWM占空比,可使水温稳定在设定值附近,误差控制在±1℃以内。该技术不仅适用于智能水杯,还可扩展至恒温箱、加热台、医疗设备等温控场景。本文从实际项目出发,完整介绍了从需求拆解、硬件选型、电路搭建到嵌入式软件架构与续航优化的全过程,并分享了PID调参经验及多种工程踩坑解决方案,适合嵌

weixin_34241036的博客 352

CH585/CH584 控制芯片数据手册总结

内容概要:CH585/CH584数据手册详细介绍了这两款集成BLE无线通讯、高速USB及NFC的RISC-V架构MCU/SoC芯片的功能与特性。CH585拥有丰富的外设资源,如2Mbps低功耗蓝牙BLE通讯模块、全速/高速USB控制器及收发器、NFC接口、段式LCD驱动模块、LED点阵屏接口、多个SPI和UART接口、14路ADC、触摸按键检测模块等。它还具备强大的内核性能,支持RV32IMBC指令集,具有三级流水线结构,支持多档系统主频,并提供高速中断响应机制。此外,CH585还支持多种电源管理模式,具备低功耗特性,支持多种安全特性,如AES-128加解密和芯片唯一ID。CH584则是基于CH585简化而来,去除了部分USB和SPI模块,减少了RAM容量。 适合人群:嵌入式系统开发者、硬件工程师、物联网(IoT)设备制造商、无线通信技术爱好者等。 使用场景及目标:适用于需要同时支持BLE、USB和NFC多种通信方式的应用场景,如智能家居、医疗健康监测设备、工业自动化控制、消费电子产品等。目标是帮助用户快速了解CH585/CH584的功能特点,指导其在实际项目中选择合适的芯片型号并进行开发应用。 其他说明:手册中包含了详细的引脚定义、存储器映像、定时器配置、I2C通信协议、USB中断机制等内容,为开发者提供了全面的技术参考资料。

CH584/CH585 触摸按键 Touch key功能 12触摸按键 功能演示程序

CH584/CH585 触摸按键 Touch key功能 12触摸按键 功能演示程序

【Pico手势开发实战】基于SteamVR串流与MRTK3的跨平台交互方案

本文详细介绍了在Pico设备上,结合SteamVR串流与微软MRTK3框架,实现高效跨平台手势交互开发的完整方案。该方案通过在PC端运行Unity项目并串流至头显,利用MRTK3封装的手势识别与交互组件,大幅提升了开发调试效率与性能上限,并确保了未来向其他OpenXR设备的良好兼容性。

weixin_29001683的博客 217

微信小程序导航栏滑动一定距离后固定到顶部

接上一篇文章的内容,通常在一个页面中部会有一个导航栏查看不同的内容,这篇文章旨在实现在页面下滑的过程中导航栏自动固定到顶部以便我们阅读过程中的切换。 下滑一段距离后自动固定到顶部 首先,思考这个功能应该是怎么实现的: 在页面下滑的过程中,我们希望系统应当能识别下滑了多少距离,当原本的导航栏逐渐被遮住以后(遮住意味着下滑了特定距离),触发这个功能,执行另一种样式,将导航栏固定在页面顶端,同时如果我们将页面往上滑,系统能识别到原来的导航栏能露出来了(即距离顶端的高度小于一个特定的值),这时候又执行最初的样式

Oblivision_Geek的博客 4032

【第三方互联】3、腾讯QQ授权第三方登录

当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联 一、获取 APP ID 和 APP Key 1、找到我的应用 2、点击应用,进入详情 这样,我们就获取到了 APP ID 和 APP Key 二、进行开发 1、将 APP ID 、APP Key,以及该应用的信息放入项目中的配置文件中,我使用的是SpringBoot,我放在了 application.y...

JACKAL 22万+

huggingface下载提示huggingface_hub.errors.EntryNotFoundError:404 Client Error: (Request 1D: Root...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1233

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5770

基于FISCO BCOS 部署可升级的 Solidity存证智能合约

本文介绍了基于FISCOBCOS平台的可升级Solidity存证智能合约实现方案。采用透明代理模式,包含逻辑合约、代理合约和管理合约三部分,支持业务逻辑升级而不影响存储数据。详细阐述了合约架构设计、Solidity代码实现、Go SDK交互流程以及完整的部署升级步骤。方案具有数据持久性、版本兼容性和生产就绪等特点,提供了权限控制、输入验证等安全机制,并包含监控管理工具。该实现为企业级区块链存证应用提供了可靠的基础架构,支持后续功能扩展和定制化开发。

分享AI、区块链技术及应用,未来已来 1514

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 714

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了。

吻等离子的博客 2872

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: CH582、CH592、CH584芯片SPI实例讲解 硬件SPI驱动OLED显示屏
下一篇: CH582、CH592、CH584沁恒MCU UART实例讲解
永远的元子
博客等级 码龄16年 330粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的元子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值