土木本科生的STM32探索之旅:无需物理按键!用触摸电容传感器点亮LED

发布时间:2026/10/24 1:52:56

土木本科生的STM32探索之旅:无需物理按键!用触摸电容传感器点亮LED 一、引言在之前的实验中我们通过机械按键实现了对LED的控制。但今天我们要挑战更高级的交互方式——触摸按键利用 STM32 内置的电容式触摸传感功能Capacitive Touch Sensing, CTS实现无物理接触的 LED 控制提升用户体验和系统智能化水平。二、硬件准备硬件STM32F103VET6开发板自带触摸按键、st-link、杜邦线若干软件STM32 Cube IDE其他准备STM32F103VET6开发板原理图、参考视频、ppt等等原理图链接DRG ST-2白羊座原理图V1.0.pdf参考视频链接[06-04]中断式触摸按键编码演示_哔哩哔哩_bilibilippt/代码仓库链接drg_st_2_f103vet6: 高博士“白羊座”STM32F103VET6开发板开源。 - Gitee.com三、原理简单说明STM32F103VET6开发板自带触摸按键的原理图从这两张图来看最直接最直白的就是手指触摸到方形按键从手指按下到手指离开pa1被拉低了1Q 那里会跟着变化。手指触摸到按键pa1被拉低1Q输出为低电平那么3v3经过led和电阻到out_1就导通了手指离开触摸按键以后pa1被拉高1Q输出为高电平则没有导通。这里是我个人的理解作为外行人员来说能力有限在原理上可能存在一定的错误若是不对不明白或者有疑问的地方也可以去看专业的博主视频讲解哦STM32F103VET6开发板自带led小灯的原理图pb0处的led0小灯点亮的原理我这就不再叙述啦往期的帖子和视频已经用到过了。实验的目标是手指触摸下方形的按键pb0处的led小灯亮起再触摸以下按键小灯又熄灭。STM32F103VET6开发板中断式的触摸按键图片来自高博士ppt那这个要怎么使用代码实现控制的逻辑直白地说只要利用中断的方式检测上升沿一旦检测到了pa1出现由低转高的状态就使连接到pb0的led小灯状态翻转。四、软件操作1、打开软件STM32 Cube IDE选择STM32F103VET6芯片新建项目Touch_Button_LED2、修改debug的模式如下图所示3、gpio引脚设置ai给了指导内容可以借鉴但实际的操作会略有不同哦可以详细看我的软件操作的图片4、nvic中断设置ai给了指导内容可以借鉴但实际的操作会略有不同哦可以详细看我的软件操作的图片nvic设置方式1nvic设置方式2设置1/2选择一个即可5、保存并生成代码6、在maic.c文件中输入相关代码可以利用ai辅助/* USER CODE BEGIN 4 */ /** * brief EXTI1 中断服务函数对应 PA1 引脚 * note 当 TTP223 触摸芯片检测到触摸时其输出引脚连接 PA1会从低电平跳变为高电平 * 触发上升沿中断。本函数负责 * 1. 确认中断源是否为 PA1 * 2. 清除中断挂起位防止重复进入 * 3. 翻转 PB0 引脚电平控制 LED 亮灭状态。 */ void EXTI1_IRQHandler(void) { /* 检查中断标志位确认是否由 PA1GPIO_PIN_1触发的中断 */ if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_1) ! RESET) { /* 必须清除中断挂起位否则中断会持续触发导致程序卡死在中断中 */ __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_1); /* 翻转 PB0 的输出电平 * - 若当前为高电平LED 灭则变为低电平LED 亮 * - 若当前为低电平LED 亮则变为高电平LED 灭。 * HAL_GPIO_TogglePin() 内部自动读取当前状态并取反无需手动维护状态变量。 */ HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); } } /* USER CODE END 4 */但是将上述代码直接复制进去编译出现了错误。将报警的内容复制给ai让其帮我们分析原因并给出修改方案。我这里选择了方法一就行了修改删去了多余代码。点击小锤子重新编译。7、编译成功以后硬件接入电脑烧录程序观察实验效果。五、思考与总结实验的过程中刚开始的初学者外行人对原理性的认识还不够深目前有点偏向复制粘贴AI指导代码。凡事总得有一个过程软硬件的学习从不会到会先试着理解原理能把实验先走成功接着再反过头来理解逻辑与原理兴许会能学习到新的知识慢慢来吧。后续的软件操作视频将会更新在我的哔哩哔哩中哔哩哔哩搜索不会c的小谢。有兴趣的小伙伴可以关注一起学习哦。
延伸阅读

更多相关文章

2026/10/24 1:47:54

Excel规划求解详解:线性规划、整数约束与0-1建模

简介:Excel下的线性规划求解一直是数据分析与运筹优化中的实用技能,这份详解文档面向需要借助Office工具完成生产计划、资源分配、投资组合等典型优化问题的学习者。全文以“规划求解”加载宏为主线,从功能定位、加载步骤、参数含义到完整操作…

2026/10/24 2:43:02

音乐与真人互动结合:Canary口语学习产品体验与设计解析

最近语言学习赛道在海外产品发现平台上很热闹,一款叫 Canary 的应用冲上了今日热榜。它的定位很有意思:用音乐学语言,靠真人互动练口语。这两个点单拎出来都不算新鲜,但放在一起做成产品,确实戳中了不少语言学习者的痛…

2026/10/24 2:43:02

数据中心月度数据更新实操复盘:从指标口径到容量预测

又到了月底整理数据中心运行数据的时间。我做企业互联网数据中心运维和容量管理已经有些年头,每月一次的“数据中心相关数据更新”看起来只是把带宽、设备、能耗、机柜使用率这些数字刷新一遍,实际上背后涉及统计口径确认、数据清洗、交叉验证、报表输出…

2026/10/24 2:43:02

TWAIN DSM源码解析:扫描链路调度与64位迁移排错

简介:这份资源是 TWAIN 数据源管理器(DSM)的开源工程源码包,对应 master 主分支的完整代码,面向需要在 Python 环境下对接扫描仪、数码相机等图像采集设备的中高级开发者。它解决了跨 32 位与 64 位平台调用 TWAIN 接口…

2026/10/24 2:43:02

动漫交流与推荐平台实战:从数据库设计到推荐算法落地

做动漫交流与推荐平台这个项目,前后花了大概一个半月,中途推翻了两次设计方案。最初接到这个需求时,我并没有急着写代码,而是先想清楚一个问题:市面上的动漫站点少说也有几十个,用户凭什么用我们这套平台&a…

2026/10/24 2:43:02

C# VISA仪器控制:统一USB/GPIB/LAN的SCPI会话实战

简介:面向自动化测试与数据采集场景的 C# 仪器控制入门实践包,重点介绍如何借助 VISA 标准接口,统一调用示波器、信号发生器、数字万用表等不同厂商的设备,适合已掌握 C# 基础、刚开始接触仪器通信的开发者。压缩包共 15 个文件、…

2026/10/24 2:38:02

U盘设备指纹:VID、PID、盘符与物理序列号获取实战

简介:这份源码资源面向需要在 Windows 平台读取 U 盘、移动硬盘、手机存储卡及 MP3/MP4 等移动存储设备硬件信息的开发者,重点解决如何获取设备 VID、PID、盘符与物理序列号的问题。作者在论坛资料基础上整理实现,最终可输出类似「盘符\VID_0…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑