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

STM32—触摸键

 

目录

1 、 电路构成及原理图 

2 、编写实现代码 

3、代码讲解

4、烧录到开发板调试、验证代码

5、检验效果


此笔记基于朗峰 STM32F103 系列全集成开发板的记录。

1 、 电路构成及原理图 

 

触摸键简单的了解就是一次电容的充放电过程。从原理图可以看出,触摸键 TOUCH 实质就是一个物理意义上的电容并且接有上拉电阻 RT 到 3.3v,同时还通过用短路帽短接 P5 的 4-5 脚连接到 STM32的 PA1 引脚。没有触摸的时候,触摸键这个物理上的电容的充放电时间是相对固定的,当手指触摸到触摸键的时候就人为的改变了这个电容的容量也就是改变了电容的充放电时间,就是通过判断这个“触摸”电容的充放电时间的变化来实现触摸识别的。

2 、编写实现代码 

main.c

touch.c

 

3、代码讲解

代码中我们使用 TIM5 的输入捕获来实现“触摸键电容“和”触摸时电容“的充放电时间的计数。先看源文件 touch.c   

 首先,初始化 TIM5,用通道 2(PA1)作为输入捕获的引脚。注意: 
这里先在头文件 touch.h 中宏定义了 TIM5 最大重填值: 
#define touch_ARR          0XFFFF          //宏定义 TIM5 最大重填值、 
定义了全局变量 default_cnt ,也就是无触摸时充电时间。 

 

这里初始化触摸按键,首先调用 TIM5 初始化函数并将自动从装值设为 0Xffff(在 touch.h 中宏定义的),分频系数设为 1。初始化循环调用获取输入捕获值函数 touch_Capture() 10 次并将捕获值累计在临时变量 temp 中,之后再取平均值并赋值个全局变量 default_cnt(这
个值实际就是没有触摸发生时“触摸键电容”的充电时长)。 

最后,判断 default_cnt 是否在合理的计数范围内(需根据实际触
摸键的情况调整),如果在合理的范围内就返回 1 表示初始成功,否
则就返回 0 表示初始化失败。 

4、烧录到开发板调试、验证代码

5、检验效果

用手指触摸一下触摸键, LED2 熄灭了吧,再触摸一次 LED2 又点亮了.

相关文章:

STM32—触摸键

目录 1 、 电路构成及原理图 2 、编写实现代码 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 触摸键简单的了解就是一次电容的充放电过程。从原理图可以看出,触摸键 …...

python中字典(dict)原理及其操作

原理 Python中的字典(Dictionary)是一种基于哈希表(Hash Table)的实现,提供了高效的键值对(Key-Value Pair)存储和访问机制。了解字典的工作原理有助于更好地理解其性能特性以及为什么在某些情…...

​​​​​​​​​​​​​​.NET Core Web API实现微服务集群部署

​​​​​​​.NET Core Web API实现微服务集群部署 在.NET Core Web API中实现微服务集群部署通常涉及多个步骤,包括服务拆分、容器化、服务注册与发现、负载均衡等。以下是一个简化的步骤指南,用于在.NET Core中构建和部署微服务集群: 服…...

网络安全与信创产业发展:构建数字时代的护城河

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...

外包干了3个月,技术倒退1年。。。

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…...

Unity发布webgl获取浏览器的URL

Unity发布webgl获取浏览器的URL Unity发布webgl之后获取浏览器的url 在unity中创建文件夹Plugins,然后添加添加文件UnityGetBrowserURL.jslib var GetUrlFunc {//获取地址栏的URLStringReturnValueFunction: function () {var returnStr window.top.location.hre…...

StarRocks实战——多维分析场景与落地实践

目录 一、OLAP 系统历史背景 1.1 历史背景与痛点 1.2 组件诉求 二、StarRocks 的特点和优势 2.1 极致的查询性能 2.2 丰富的导入方式 2.3 StarRocks 的优势特点 三、多维分析的运用场景 3.1 实时计算场景 / 家长监控中心 3.2 实时更新模型选择 3.2.1 更新模型UNIQU…...

golang 函数式编程库samber/mo使用: Result

golang 函数式编程库samber/mo使用: Result 如果您不了解samber/mo库, 请先阅读上一篇 Option , 这篇讲述结构体Result的使用 Result和Option区别 samber/mo有了Option, 为什么还有Result呢? 我们先看看定义: Opt…...

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12)

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12) 介绍算法公式 代码rolling函数介绍核心代码计算 CHO 完整代码 介绍 CHO(济坚指数)是一种在金融领域中用于衡量市场波动性和风险的指数 先…...

MySQL的SQL语句

1.MySQL连接 连接命令一般是这样写的 mysql -h$ip -P$port -u$user -p比如:mysql -h127.0.0.1 -P3306 -uroot -p -h 指定连接的主机地址;-P 指定连接端口号;-u 指定用户名 -p指定用户名密码 2.SQL分类 DDL(Data Definition Language) 数据定义语言&…...

ABAP 发送带EXCEL邮件

前言 没啥特殊需求,就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式,每列之间用TAB制表符分隔,每行之间用回车符分隔 思路也比较明确,在SAP中实现这种格式&#xf…...

Linux Nginx SSL 证书配置正确,扔展示不安全

Nginx SSL 配置 首先我能够确定自己的Nginx SSL是配置正确的: 问题展示 通过浏览器访问自己域名,点击不安全后查看证书,展示的证书并不是自己所配置的证书,如下: 通过curl -vvv https://域名访问返回的证书是过期…...

算法沉淀——动态规划之子数组、子串系列(上)(leetcode真题剖析)

算法沉淀——动态规划之子数组、子串系列 01.最大子数组和02.环形子数组的最大和03.乘积最大子数组04.乘积为正数的最长子数组长度 01.最大子数组和 题目链接:https://leetcode.cn/problems/maximum-subarray/、 给你一个整数数组 nums ,请你找出一个具…...

Flutter GetX 之 暗黑模式

我们紧接上篇文章,今天继续讲解一下强大的 GetX 的另一个功能,就是 暗黑模式 ,在iOS 13开始苹果的应用慢慢的都开始适配 暗黑模式,andr。oid 也慢慢的 开始跟进,截止到目前,商店的大部分应用都已经完成了 暗…...

SQLlabs46关

看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: passward 可以看到顺序是不同的,当然第一列第二列第三列也可以,基本上都是这个原理,那怎么去实现注入呢,我…...

【Android移动开发】Windows10平台安装Android Studio与人工智能算法模型部署案例

目录 一、Android Studio下载地址二、开发环境JDK三、开始安装Android Studio四、案例展示与搭建五、人工智能算法模型移动端部署案例参考 一、Android Studio下载地址 https://developer.android.google.cn/studio/install.html 电脑配置要求: 下载保存在指定文…...

【IDEA】java 项目启动偶现Kotlin 版本问题 error:Kotlin:module was

一、问题描述: error:Kotlin:module was compiled with an incompatible version of kotlin the binary version of its metadata is二、问题原因: jar包版本冲突 三、解决方式: 1、Rebuild Project(推荐☆) 重新构…...

Jmeter系列(2)目录介绍

目录 Jmeter目录介绍bin目录docsextrasliblicensesprintable_docs Jmeter目录介绍 在学习Jmeter之前,需要先对工具的目录有些了解,也会方便后续的学习 bin目录 examplesCSV目录中有CSV样例jmeter.batwindow 启动文件jmeter.shMac/linux的启动文件jmete…...

vue基础操作(vue基础)

想到多少写多少把&#xff0c;其他的想起来了在写。也写了一些css的 input框的双向数据绑定 html <input value"123456" type"text" v-model"account" input"accou" class"bottom-line bottom" placeholder"请输入…...

EEA架构

概念 EEA&#xff08;Electrical/Electronic Architecture&#xff09;是一个综合性的概念&#xff0c;它涉及汽车电子电气系统的设计和整合。EEA是汽车上电气部件之间的相互关系&#xff0c;以及包含所有电气部件和电气系统所承载的逻辑功能的组织结构。它是系统的组织结构表…...

【物联网应用案例】牧场牛棚环境管理项目

众所周知&#xff0c;奶牛的健康和牛奶的产量在很大程度上取决于其所在的环境。对于牧场而言&#xff0c;牛棚内的环境更是至关重要。一个适宜的环境不仅能保证奶牛的舒适度&#xff0c;还能提高其产奶量&#xff0c;从而为牧场带来更多的经济效益。 为了更好地理解牛棚环境对…...

【Vue】组件通信组件通信

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 组件通信 组件通信&#xff0c;就是指组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据想用其他组件的数据--&…...

瑞_Redis_Redis客户端

文章目录 1 Redis客户端1.1 Redis命令行客户端1.2 图形化桌面客户端1.2.1 资源准备1.2.2 安装1.2.3 建立连接 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的基础篇的Redis客户端章节。由于博主是从B站黑马程序员的《Redis》学习其相关知识&#xff0c;所以本…...

在Ubuntu系统下搭建TDengine集群

目录 一、Ubuntu虚拟机创建 二、系统相关配置 1、设置系统hostname 2、网络配置及IP规划 3、配置FQDN&#xff08;etc/hosts&#xff09; 4、服务端口设置 三、TDengine server安装 1、服务安装 2、修改配置 3、启动taosd 4、服务卸载 四、客户端安装 1、client安…...

Easy-Jmeter: 性能测试平台

目录 写在开始1 系统架构2 表结构设计3 测试平台生命周期4 分布式压测5 压力机管理6 用例管理6.1 新增、编辑用例6.2 调试用例6.3 启动测试6.4 动态控量6.5 测试详情6.6 环节日志6.7 实时数据6.8 测试结果 7 测试记录7 用例分析8 系统部署8.1普通部署8.2容器化部署 写在最后 写…...

Unity3D Lua与C#的相互调用与性能剖析详解

前言 在游戏开发中&#xff0c;经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式&#xff0c;并对其性能进行剖析。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一起交流一下开发经验呀&#xff01…...

鸿蒙开发路由跳转踩坑

文章目录 前言常见路由不能跳转问题总结 一、前言 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [manifest_router.cpp(GetPagePath)-(0)] [Engine Log] cant find this page pages 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [page_router_manager.cpp(StartPush…...

SpringBoot 3 新特性

目录 1. GraalVM1.1 生成本地可执行应用1.2 生成docker镜像 2. 支持虚拟线程3. HTTP Interface 1. GraalVM 使用GraalVM将SpringBoot应用程序编译成本地可执行的镜像文件&#xff0c;可以显著提升启动速度、峰值性能以及减少内存应用。传统的应用都是编译成字节码&#xff0c;…...

Day02:Web架构前后端分离站Docker容器站集成软件站建站分配

目录 常规化站点部署 站库分离 前后端分离 集成软件搭建Web应用 Docker容器搭建Web应用 建立分配站 静态 与 伪静态 总结 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗…...

链表和顺序表的优劣分析及其时间、空间复杂度分析

链表和顺序表的优劣分析及其时间、空间复杂度分析 一、链表和顺序表的优劣分析二、算法复杂度<font face "楷体" size 5 color blue>//上面算法的执行次数大致为&#xff1a;F&#xff08;N&#xff09; N^22*N10;   N 10,F(10) 1002010 130次   N 1…...

北关网站制作/互联网推广是什么

在oracle 11g release 2 版本中新增的listagg函数&#xff0c;listagg是一个实现字符串聚合的oracle内建函数;listagg(column,‘分隔符‘) within group (order by column) over(partition by column)分隔符可以为空&#xff0c;order by必选项&#xff0c;可以order by null(1…...

英文 科技网站/长沙专业竞价优化公司

路线&#xff1a;xx.pth -> xx.onnx -> xx.trt 实验版本&#xff1a;torch 1.10.0&#xff1b;tensorrt 7.2.3.4&#xff1b; onnx 1.8.1 1. pth2onnx.py # 将pytorch训练的模型xx.pth转为xx.onnx。 import torch from model import resnet50 # 导入模型结构 impo…...

网站制作公司新鸿儒/排行榜

dagger 注入Dagger是基于Guice的开源依赖项注入&#xff08;DI&#xff09;框架。 但是&#xff0c;Dagger的开发人员对Guice的基本原理并不满意&#xff1a;他们一次又一次地不得不在较大的项目中编写代码&#xff0c;其中涉及大量的绑定代码。 由于这是静态语义的一部分&…...

wordpress用户注册打文章/建网站需要多少钱和什么条件

网络策略介绍 默认情况下&#xff0c;Kubernetes 集群网络没任何网络限制&#xff0c;Pod 可以与任何其他 Pod 通信&#xff0c;在某些场景下就需要进行网络控制&#xff0c;减少网络攻击面&#xff0c;提高安全性&#xff0c;这就会用到网络策略。 网络策略&#xff08;Netwo…...

js网站模板怎么用/外链代发免费

最近Boss提了个需求&#xff0c;要收集下公司的电脑信息&#xff0c;配置比较低的淘汰掉。本来想用腾讯的电脑管家里的【硬件检测】工具&#xff0c;但也有些麻烦。它虽然可以将信息导出成txt文件&#xff0c;但录制作一张Excel表格就显得麻烦了&#xff0c;需要将每台电脑的硬…...

响应式企业网站 下载/网推和地推的区别

定义 TCHAR &#xff1a;通过define 定义的字符串宏 因为C支持两种字符串&#xff1a;常规的ANSI编码 &#xff08;使用""包裹&#xff09;、Unicode编码&#xff08;使用L" "包裹&#xff09;。因此对应的有两套字符串处理函数。 比如&#xff1a;strlen …...