中颖51芯片学习10. Touch Key触摸按键功能

中颖51芯片学习10. Touch Key触摸按键功能

  • 一、SH79F9476 资源介绍
    • 1. 特性
    • 2. 系统框图:
    • 3.准备环境
  • 二、准备工具
  • 三、开发步骤
    • 1. 新建项目流程
      • (1)新建工程
      • (2)选择芯片和封装
      • (3)触摸配置按键
      • (4)配置校准、调试选项
      • (5)生成工程
    • 2. 编译运行项目
      • (1)设置Device芯片型号:
    • 3. 数据观测
      • (1)STouchKey选择串口号
      • (2)点击启动调试
      • (3)触发选项设置
  • 四、现有项目移植流程
    • 1. 拷贝库文件
    • 2. keil 添加文件
    • 3. 添加 tk_conf_add.h头文件
    • 4. 添加include包含路径
    • 5. 取消touch key项目的uart调试输出
    • 6. main.c

本文使用的芯片是中颖 SH79F9476

一、SH79F9476 资源介绍

1. 特性

SH79F9476内建触摸按键功能模块,最大能连接20个按键。
SH79F9476内建触摸按键功能模块工作电路精简,应用时无需外接电容,即可实现触摸检测功能。
硬件高抗干扰。
灵活软件库,支持上电自校准功能,低开发难度。

2. 系统框图:

在这里插入图片描述

3.准备环境

本文实验需要在触摸引脚接出触摸PCB,相关PCB设计可另行搜索文章处理。

二、准备工具

从官网下载STouchKey调试工具:
https://www.sinowealth.com/seach?type_id=68&a_v_type=1
在这里插入图片描述
下载后双击 按提示安装:
在这里插入图片描述

安装成功后,在安装文件夹可以看到文档 :
在这里插入图片描述

这两个文档是本文学习资源的主要来源。

三、开发步骤

1. 新建项目流程

(1)新建工程

打开StouchKey软件,点击“新建工程”。
在这里插入图片描述

(2)选择芯片和封装

在这里插入图片描述

(3)触摸配置按键

按自己电路板的按键顺序,依次点击TK端口,下图是示例:

在这里插入图片描述

(4)配置校准、调试选项

这里我们使用UART0作为调试输出引脚,按下图所示,钩选复选框 ,并设置UART0 引脚:
在这里插入图片描述

(5)生成工程

钩选
Keil Project,选择目标路径,点击下一页,完成配置过程 。
在这里插入图片描述
系统会自动打开数据观测界面。

2. 编译运行项目

关闭其它Keil工程,打开新建的触摸按键工程。

(1)设置Device芯片型号:

在这里插入图片描述
设置以下内容:
在这里插入图片描述
Erase Flash、Program Flash、Verify Flash建议钩选。

Power Source根据主板供电情况进行选择。
编译、下载、运行程序。

3. 数据观测

连接芯片上串口到电脑,

(1)STouchKey选择串口号

在这里插入图片描述

(2)点击启动调试

在这里插入图片描述

观测示例:
在这里插入图片描述

捕获的数据在安装目录下。

(3)触发选项设置

点击 STouchKey设置菜单,Point Trigger可以选 None不触发、Single上升沿触发、Double双边沿触发。
可以视需要调整设置:
在这里插入图片描述
捕获到按键示例:
在这里插入图片描述

四、现有项目移植流程

本示例在前面的示例项目中移植触摸功能。

1. 拷贝库文件

  • 拷贝 sino_touchkey 到目标项目
    在这里插入图片描述

2. keil 添加文件

在这里插入图片描述

添加LIB:
在这里插入图片描述

3. 添加 tk_conf_add.h头文件

新建组 config file,添加tk_conf_add.h文件,如下图所示:
在这里插入图片描述

4. 添加include包含路径

在这里插入图片描述

添加后项目结构如下:
在这里插入图片描述

由于原项目里已经有了 cpu.h 头文件定义U8等数据类型,sino_touchkey的c51_type.h 定义重复,删除原有的cpu.h,统一使用c51_type.h,并修改自己项目中的cpu.h引用。

5. 取消touch key项目的uart调试输出

在这里插入图片描述
示例会直接使用UART输出日志,故不再输出EUART0的调试信息。

6. main.c

#include "isr_utils.h"
#include "../sino_touchkey/Lib/sino_touchkey.h"
#include "log_utils.h"void main() {// 选择高速时钟SET_MCU_CLK_RC_24MenableAllIsr();// 初始化串口Uart0_Init();LOGI((TAG,"start s=%bd", 0));timerinit();Touchkey_adjust();touchkeyinit();       //touch key 初始化while(1){        		RSTSTAT = 0;if(f_5ms){f_5ms = 0;Get_TK_States();           // 按键扫描     if(sino_key_value_pre != sino_key_value){sino_key_value_pre = sino_key_value;LOGI((TAG,"touch key=%ld", sino_key_value));}}		   	}
}

编译下载程序,运行后,按相应的按键,会通过串口输出按键信息。
在这里插入图片描述
关于触摸的参数调整优化以后再补充。

本文章参考学习资源来自中颖官方文档
本文代码开源地址: https://gitee.com/xundh/learn-sinowealth-51

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/659759.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能AI书籍】TensorFlow机器学习实战指南(推荐)

今天又来给大家推荐一本人工智能方面的书籍<TensorFlow机器学习实战指南>。TensorFlow是一个开源机器学习库。本书从TensorFlow的基础开始介绍&#xff0c;涉及变量、矩阵和各种数据源。之后&#xff0c;针对使用TensorFlow线性回归技术的实践经验进行详细讲解。后续章节…

Spark原理之Cache Table的工作原理及实现自动缓存重复表的思考

CACHE TABLE的能力 使用此语法&#xff0c;可以由用户自定义要缓存的结果集&#xff0c;实际上就是一个临时表&#xff0c;不过数据存储在Spark集群内部&#xff0c;由Application所分配的executors管理。 一旦定义了一个缓存表&#xff0c;就可以在SQL脚本中随处引用这个表名…

Java并发常见面试题总结(上)

什么是线程和进程? 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个 JVM 的进…

读懂一本书笔记

文章目录 引言 我是一个用读书改变自己生活的人01 会读书&#xff0c;更要会讲书复杂时代&#xff0c;阅读是大众反脆弱的武器你焦虑吗&#xff1f;如何从“单向度的人”变为“多向度的人”第一&#xff0c;读书是主动的学习方式第二&#xff0c;读书是有针对性的学习方式 讲书…

MAC 本地搭建Dify环境

Dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员&#xff0c;也能参与到 AI 应用的定义和数据运营过…

【VueUse】超越基本功能的高级 Vue 元素操作

在vue开发中我们经常需要操作DOM元素&#xff0c;从简单的添加类到动态创建元素&#xff0c;这些操作都是不可避免的。而在VueUse库中&#xff0c;Elements相关API函数为我们提供了一系列强大而灵活的工具&#xff0c;帮助我们更轻松地处理DOM元素。无论是优雅地处理元素、动态…

Three.js 的优势

Three.js 是一个非常流行的基于 WebGL 的 JavaScript 库&#xff0c;用于在浏览器中创建和展示 3D 内容。以下是 Three.js 的一些主要优势&#xff0c;这些优势使得 Three.js 成为创建和展示 3D 内容的强大工具&#xff0c;无论是对于初学者还是经验丰富的开发者。北京木奇移动…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难&#xff0c;对于Ubuntu或Debian系统&#xff0c;使用命令sudo apt install python3&#xff1b;对于CentOS、Red Hat或Fedora系统&#xff0c;使用命令sudo yum install python3。 如何在Linux上安装Python&#xff1f; 确切的安装步骤有所不同&am…

【Qt】C1060 堆空间不足

原因 搜索之后发现可能是因为 Qt添加大量资源文件,编译时就会出现内存溢出。 但很奇怪之前编译好好的&#xff0c;突然报这个错。&#xff08;卸载qt重装后&#xff09; 解决 报错提示的类文件所在的根目录的.pro文件中添加 CONFIG resources_big

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1&#xff0c;2&#xff0c;3&#xff0c;4 四个数字&#xff0c;它们能组成多省个互不相同且无重复的三位数&#xff1f;都分别是多少&#xff1f; 话不多说&#xff0c;我们先上代码 num 0 # 我们写了三个for循环&#xff0c;表示生成的三位数 for i…

浏览器预加载器如何使页面加载速度更快

预加载器&#xff08;也称为推测或前瞻预解析器&#xff09;可能是浏览器性能有史以来最大的改进。 那么什么是预加载器以及它如何提高性能呢&#xff1f; 浏览器如何加载网页 网页充满了依赖关系——在下载相关的CSS之前页面无法开始渲染&#xff0c;然后当遇到脚本时HTML解…

04 Docker练习赛从0开始到 docker 镜像提交

1.1 本地安装 docker 工具 这里以ubutun下安装docker为例,其他操作系统安装命令略有不同,可自行百度。(建议使用阿里源安装速度快) sudo apt install docker.io如果你本地有gpu,请继续执行如下命令以支持gpu调用: 注意: 英伟达对 docker 支持的 linux 发行版:https:/…