当前位置: 首页 > 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 又点亮了.

相关文章:

  • 我们在SqlSugar开发框架中,用到的一些设计模式
  • 光学相干断层扫描(OCT)在 妇科诊断 中的革命性应用
  • 服务器遭受 DDoS 攻击的常见迹象有哪些?
  • C语言—自定义(构造)类型
  • igolang学习3,golang 项目中配置gin的web框架
  • 算法提升——LeetCode第385场周赛总结
  • 端口占用:Web server failed to start. Port XXX was already in use.原因分析-解决方案
  • RabbitMQ 网络分区处置策略配置
  • 应用服务器基础环境快速搭建
  • 【Git】:初识git
  • NestJS入门4:MySQL typeorm 增删改查
  • LeetCode刷题笔记之二叉树(三)
  • Emlog博客网站快速搭建并结合内网穿透实现远程访问本地站点
  • 每日五道java面试题之spring篇(三)
  • Cesium 展示——加载 tileset.json 格式的模型数据
  • 【刷算法】从上往下打印二叉树
  • CentOS 7 防火墙操作
  • const let
  • nodejs:开发并发布一个nodejs包
  • Python 反序列化安全问题(二)
  • Vim Clutch | 面向脚踏板编程……
  • 第2章 网络文档
  • 给第三方使用接口的 URL 签名实现
  • 坑!为什么View.startAnimation不起作用?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 一些关于Rust在2019年的思考
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1)Android开发优化---------UI优化
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)logging(日志模块)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (接口自动化)Python3操作MySQL数据库
  • (三)c52学习之旅-点亮LED灯
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (五)c52学习之旅-静态数码管
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 成都线下面基会拉开序幕
  • .net 后台导出excel ,word
  • .net 提取注释生成API文档 帮助文档
  • .NET成年了,然后呢?
  • @Responsebody与@RequestBody
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2021 蓝帽杯] One Pointer PHP
  • [ACTF2020 新生赛]Upload 1
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [Asp.net mvc]国际化