土木本科生的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]中断式触摸按键编码演示_哔哩哔哩_bilibili
ppt/代码仓库链接: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_LED



2、修改debug的模式,如下图所示

3、gpio引脚设置(ai给了指导内容,可以借鉴,但实际的操作会略有不同哦,可以详细看我的软件操作的图片)





4、nvic中断设置(ai给了指导内容,可以借鉴,但实际的操作会略有不同哦,可以详细看我的软件操作的图片)


nvic设置方式1

nvic设置方式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)
{
/* 检查中断标志位:确认是否由 PA1(GPIO_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的小谢。
有兴趣的小伙伴可以关注,一起学习哦。
更多推荐



所有评论(0)