STM32F103电容按键测量与定时器输入捕获函数解析

需积分: 43 65 下载量 149 浏览量 更新于2024-08-05 收藏 26.22MB PDF 举报
"该资源是一份关于STM32微控制器的电容按键测量技术文档,主要涉及使用定时器进行输入捕获,以检测电容按键是否被触摸。文档介绍了如何编写相关函数,以及相关的软件分析,包括电容按键的宏定义、定时器设置和中断配置。此外,还提及了一本关于STM32F103学习的书籍,书中详细介绍了STM32F103的外设使用和学习方法。" 在STM32微控制器中,定时器输入捕获是一种常用的技术,用于精确测量外部事件的发生时间。在本例中,该技术被应用于电容按键的检测,通过比较无手指触摸时的充电时间T1和有手指触摸时的充电时间T2来判断按键状态。具体实现包括以下几个步骤: 1. **配置定时器**:使用TIM5作为输入捕获的定时器,通过宏定义`TPAD_TIM`、`TPAD_TIM_APBxClock_FUN`和`TPAD_TIM_CLK`分别设定定时器及其时钟源。定时器的预分频器设置为`(72-1)`,周期寄存器值设为`0XFFFF`,确保定时器覆盖足够宽的时间范围。 2. **GPIO配置**:电容按键的输入捕获通道连接到GPIOA的第1个引脚,宏定义如`TPAD_TIM_CH_GPIO_CLK`、`TPAD_TIM_CH_PORT`和`TPAD_TIM_CH_PIN`。选择TIM通道2,即`TIM_Channel_2`,用于输入捕获。 3. **中断设置**:启用TIM5的中断,通过`TPAD_TIM_IT_CCx`设置中断类型为CC2(通道2的捕获/比较中断),并定义中断服务函数`TIM5_IRQHandler`。中断信号通过`TPAD_TIM_IRQ`对应的中断请求号触发。 4. **编程逻辑**:当定时器捕获到电容按键的充电时间T1和T2时,可以通过比较这两个时间差来判断是否有手指触摸按键。当T2显著大于T1时,说明电容值发生变化,可能有手指触摸。 这份文档是基于STM32F103的学习资源,书中推荐了一个学习路径,强调了基础入门篇的重要性,并提供了详细的学习资料,包括STM32的官方参考手册和Cortex-M3的权威指南。作者强调了理解外设功能框图的关键性,通过功能框图分析可以深入理解外设工作原理,从而更好地编写代码。书中每个章节针对一个特定的外设进行讲解,结合实例代码进行实践,有助于读者掌握STM32F103的使用。 配合特定的硬件平台——"指南者",读者可以进行实际操作,提高学习效率。同时,作者还提供了一个技术论坛供学习者交流问题和分享经验,以增强学习过程中的互动和支持。