- 基本计时实验
- 输入捕获实验(实验3的基础)
- 电容按键检测实验
- 输出PWM实验
- PWM驱动无刷电机实验
原理其实非常简单,通过TIM定时器的输入捕获功能判断电容的充电时间(没有触摸的充电时间短,有触摸的充电时间长)经过对比来确定是否有手指触碰。
图片来源:零死角玩转STM32(库函数版)刘火良由上面两个图片可以看出,没有手指触摸时电容为Cx,有手指触摸时电容为Cx+Cs
根据电容充电时间公式:
Vc=V0*(1-e(-t/RC))
明显可以看出有触摸的时间(t2)较长,所以在设计程序是只需要测量出无触摸的时间(t1),若充电时间超出一定范围即可判定为有手指触摸。
- TIM定时器初始化(TIM5_Config)
- 电容按键初始化,并设置触摸阈值(TPAD_Init)
- 获取没有触摸的充电时间t0(TPAD_GetVal)
- 循环获取充电时间tx并将与t0对比(TAPD_GetMaxVal)
- 若tx超过触摸阈值,判定为有触摸(TPAD_Scan)
(0)宏定义
(1)TIM5_Config函数
(2)按键初始化
(3)触摸按键复位函数
(4)获取充电(触摸)时间
(5)获取最大触摸按键时间
(6)按键扫描函数
这一次实验没有什么难度,就是输入捕获的一个实际应用,但是有一个问题我始终不明白,在TIM5_Config函数中,如果我开启了TIM5的计数中断和CC2溢出中断,程序就会跑死,删除这句后,程序也可以正常执行,不理解,各位大佬如果知道可以评论告诉我,谢谢~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/8620.html