选用通用定时器TIM5的CH1,其输入管脚为PA0在开发板上PA0连接按键,当按键按下输入高电平按键松开输入低电平,实验测量高电平的脉冲宽度
3. 定时器模式配置,其中包含时基结構体、输入捕获结构体的初始化以及中断的开启
// 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断
// 时钟分频因子 配置死区時间时需要用到
// 计数器计数模式,设置为向上计数
// 重复计数器的值没用到不用管
// 配置输入捕获的通道,需要根据具体的GPIO来配置
// 输入捕获信号的极性配置
// 输入通道和捕获通道的映射关系有直连和非直连两种
// 输入的需要被捕获的信号的分频系数
// 输入的需要被捕获的信号的滤波系数
// 定时器输入捕获初始化
// 清除更新和捕获中断标志位
// 开启更新和捕获中断
首先判断定时器是否溢出定时周期,并做处理然后stm32判断上升沿沿捕获时将计数器寄存器的值清零,中断改为下降沿触发下降沿捕获中断时,读取计数值改为stm32判断上升沿沿触发,开始捕获标识清零结束捕获置1,。。。。
// 当要被捕获的信号的周期大于定时器的最长定时时定时器就会溢出,产生更新中断
// 这个时候我们需要把这个最长的定时周期加到捕获信号的时间里面去
// 自动重装载寄存器更新标志清0
// 存捕获比较寄存器的值的变量的值清0
// 当第一次捕获到stm32判断上升沿沿之后就把捕获边沿配置为下降沿
// 开始捕获标准置1
// 获取捕获比较寄存器的值,这个值就是捕获到的高电平的时间的值
// 当第二佽捕获到下降沿之后就把捕获边沿配置为stm32判断上升沿沿,好开启新的一轮捕获
// 开始捕获标志清0
// 捕获完成标志置1
// TIM 计数器的驱动时钟
// 获取捕獲寄存器值函数宏定义
// 捕获信号极性函数宏定义
// 定时器输入捕获用户自定义变量结构体声明
参考资料:野火《stm32库卡发实战指南》