【STM32】电容触摸按键

电容按键就是酷,但据我使用过电容按键版的洗澡计费机子后,一生黑(湿手优化没做好的电容按键简直稀碎)。

大部分图片来源:正点原子HAL库课程

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    触摸按键原理

2    测量是否触摸的原理

3    关键点

3.1    充电时间测量

3.2    开机校准

3.3    轮询充电时间

3.4    阻止多次按下的响应


1    触摸按键原理

触摸按键可以理解为一个电容。


2    测量是否触摸的原理


3    关键点

3.1    充电时间测量

(1)    放电并进入充电状态:

        a)    GPIO设置为推挽输出,并输出低电平,延时个几毫秒让电容放电;

        b)    将输入捕获的标志位清空;

        c)    将计数器的值清空;

        d)    GPIO设置为浮空输入,这里注意上下拉一定要设置为无,否则默认是上拉输入,就不是浮空了。

(2)    获取充电上升沿产生时间:

        a)    循环检测输入捕获标志位;

        b)    若标志为RESET,则在循环中一次次获取计数器的值,若计数器的值快溢出了,就视为超时,返回计数器的值;

        c)    若标志位SET则不进入循环,直接输出输入捕获的比较值,该值则为充电过程中的计数次数。

3.2    开机校准

开发板上电的时候就需要测试一次没有触摸时的充电时间,可以在定时器初始化后调用测量。

校准时可以考虑多次测量,去掉最大值,去掉最小值,再平均,以获得较为准确的无触摸充电时间。

3.3    轮询充电时间

使用定时器或者在main函数while循环中定期调用充电时间测量函数进行测量,若测出来的充电时间大于初始的无触摸充电时间一定程度(注意⚠️!是大于一定程度,而不是仅仅大于,因为无触摸时充电时间也有一定的跳动,因此应该大于其一定程度才能算触摸了),则可以判定触摸按键被触摸。

此处,轮询的每一次都可以考虑多次测量,去掉最大值,去掉最小值,再平均,以获得较为准确的触摸充电时间。

3.4    阻止多次按下的响应

使用一个标志,在按下后置1,且每次按下后当且仅当该标志为0时才发生按键响应动作,而在检测到没按下的状态将该标志置0。

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

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

相关文章

Python 如何操作 Excel 文件(openpyxl, xlrd)

Python是处理Excel文件的一种非常强大且灵活的工具,尤其是通过使用openpyxl和xlrd等库。openpyxl专注于Excel 2007及更高版本的.xlsx文件的创建、读取、修改和写入,而xlrd则主要用于读取早期版本的Excel文件(.xls),但自…

【教你一键解决】draw.io中输入英文显示成中文且输入位置移到首位

问题描述:当英文输入一个“a”时,会自动出现中文“一个”,再输入“a”才会出现“a”,删除时无法把中文删除,如下图所示。 解决方法:关闭浏览器的自动翻译功能即可,如下图所示。

HTTPS协议中的加密机制分析、证书认证

目录 一、为什么要对数据进行加密? 二、什么是加密和解密? 三、加密方式 对称加密 非对称加密 四、数据摘要(数据指纹) 五、数字签名 六、探究保证双方通信安全的的加密方案 1、只使用对称加密 2、只使用非对称加密 3、双方都是用非对称加密 …

怎么理解数据资源、数据资产和数据要素?

身处信息化时代,我们每时每刻都在产生和接触各类数据,如网购记录、短视频等。在我国数据安全法中将数据定义为任何以电子或其他方式对信息的记录。即数据不仅指数字表格等结构化内容,也可以是文字、图形、图像等半结构化、非结构化信息。 1、…

航空制造领域中三维工艺技术的应用

飞机制造企业可以通过三维数字化技术的应用有效提升了工艺设计水平,解决了在航空产品数字化工艺设计、制造方面的标准统一和系统整合等问题,保证了业务应用系统基础数据的一致性和规范性。本文是对航空制造领域中三维工艺技术的应用的介绍。 随着信息化技…

安装JKS格式证书

--千金易得 知己难求 本文介绍如何在Tomcat服务器配置JKS格式的SSL证书,具体包括下载和上传证书文件,在Tomcat上配置证书文件和证书密码等参数,以及安装证书后结果的验证。成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问To…

ffmpeg教程及加速视频转码

ffmpeg教程及加速视频转码 1、ffmpeg简介: ffmpeg来自MPEG视频编码标准。 是一套可以用来记录,转换数字音频、视频,并能将其转化为流的开源计算机程序。 可以轻易的实现多种视频格式之间的相互转换。 2、基础知识: 容器、文件…

FDM3D打印系列——创想三维打印机卡料修复后续处理

大家好,我是阿赵。   之前我的创想三维Sermoon v1打印机卡料了,我自己拆开打印头组件,把卡料的地方修复了。   但问题并没有彻底的解决。在后续打印之中,还是经常出现卡料。有些需要打印实际个小时的模型,在打印了…

基于Material Design风格开源的Avalonia UI控件库

前言 今天大姚给大家分享一款基于Material Design风格开源、免费(MIT License)的Avalonia UI控件库:Material.Avalonia。 当前项目还处于alpha阶段。 Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应…

内网穿透的应用-如何使用跨平台终端Tabby结合内网穿透工具异地远程ssh访问Ubuntu系统

文章目录 前言1. Tabby下载安装2. Tabby相关配置3. Tabby简单操作4. ssh连接Linux4.1 ubuntu系统安装ssh4.2 Tabby远程ssh连接ubuntu 5. 安装内网穿透工具5.1 创建公网地址5.2 使用公网地址远程ssh连接 6. 配置固定公网地址 前言 今天和大家分享一下如何在Windows系统使用Tabb…

Trimming项目完整流程

Trimming项目完整流程 FsmStates状态机 public enum FsmStates {// 初始状态,FSM 启动后的第一个状态Initial,// 等待序列化过程控制器(SPS)启动的状态// 在此状态下,FSM 等待外部系统或设备准备就绪WaitOnSPSStart,// 加载数据库…

【使用python实现多目标批量ping】附案例

以下为使用 Python 实现批量 ping 的多种方法及代码示例: 方法一: import subprocessfilepath E:\\Python\\tools\\AutoMatic\\hosts.txt with open(filepath, r) as f:hosts f.readlines()for host in hosts:result subprocess.check_output((ping…

C语言典型例题55

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,…

大模型的latency(延迟)和throughput(吞吐量)有什么区别?

1. 导入 为了快速应用大模型,我们需要采购商业大模型。采购前,对接销售时,我们描述了我们的场景和需求: Q:我们的prompts token数量在1500-2000之间,completion token数量在500左右。这种情况下&#xff…

同三维S20和S20K系列高清和4K摄像机说明书:高清HDMI摄像机

同三维S20和S20K系列高清和4K摄像机 视频会议摄像机概述前言 非常感谢您使用本公司视频会议产品!在使用本产品之前,敬请仔细阅读使用手册。本手册详细介绍了多功能视频会议摄像机的功能、安装和使用操作的一般原则及方法。本系列视频会议摄像机是一款高性能、高灵敏…

设计模式 -- 外观模式(Facade Pattern)

1 问题引出 组建一个家庭影院 DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机,放下屏幕 ,开投影仪 ,开音响&#xf…

【云原生】Kubernetes中如何通过Pod名称查询Docker容器ID,通过Docker容器ID查询Pod名称?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

FGF23:家族靶向治疗先行者

成纤维细胞生长因子23(FGF23)属于FGF19亚家族成员,由成骨细胞、骨细胞和骨髓合成,是磷酸盐和钙稳态的重要调节剂,同时与铁稳态、炎症和红细胞生成也有关。 (数据来源AlphaFold) FGF23由251个氨…

Git 学习

一、基本使用 1. 基本理论 Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目;版本控制是一种记录一个或者若干个文件内容变化,以便来查阅特定版本修订情况的系统 集中化版本控制系统:SVN, CV…

应急响应--日志分析

应急响应–日志分析 文章目录 一、Windows日志二、Linux日志三、Web日志 3.1、IIS中间件日志3.2、Apache中间件日志3.3、Tomcat中间件日志3.4、Weblogic3.5、Nginx中间件日志 一、Windows日志 Windows日志记录着Windows系统中硬件、软件和系统问题的信息,同时还…