首先,第一个时基工作参数配置 HAL_TIM_IC_Init( )
还是一样的套路,传参是一个句柄,先定义一个结构体
Instance:指向TIM_TypeDef的指针,表示定时器的实例。TIM_TypeDef是一个包含了定时器寄存器的结构体,用于对寄存器进行配置和操作。
Init:定时器基本配置,是一个TIM_Base_InitTypeDef类型的结构体变量,包含了定时器的时钟分频系数、计数模式、自动重装载值等信息。
Channel:定时器活动通道,用于指示当前活动的通道。在定时器的输入捕获和输出比较等功能中使用。
hdma[TIM_DMA_ID_CC1]:定时器DMA句柄数组,用于配置和管理定时器的DMA传输。在使用DMA传输时,可以将DMA句柄与定时器关联。
Lock:定时器锁,用于保护对定时器的并发访问。在多线程或中断环境中使用。
State:定时器状态,表示定时器的当前状态。是一个HAL_TIM_StateTypeDef类型的枚举变量,包括以下值:
HAL_TIM_STATE_RESET:定时器已复位。
HAL_TIM_STATE_READY:定时器准备好并且未启动。
HAL_TIM_STATE_BUSY:定时器正在进行配置或操作。
HAL_TIM_STATE_TIMEOUT:定时器操作超时。
HAL_TIM_STATE_ERROR:定时器操作错误。
基本用不到下面几个,把上面两个使用了即可
接着是输入通道配置HAL_TIM_IC_ConfigChannel()
第一个 ICPolarity 就是极性,
第二个ICSelection 就是通道的映射,
第三个ICPrescaler 就是分屏,
第四个 ICFilter 就是滤波
那么第一个 ICPolarity 就有三个参数选择,上升和下降沿触发
第二个ICSelection 也有三个参数,直接和间接,这里选择直接T1
第三个ICPrescaler 有四个参数,分别是一分频二分频四分频八分频,这里我们默认不分频,就是一分频
第四个 ICFilter 正常我们不滤波,直接写0即可
接着使用 使能更新中断 __HAL_TIM_ENABLE_IT( )
一共两个参数,第一个还是句柄 handle ,第二个就是中断的类型,这里我们选择上面的更新中断类型
然后我们使用 使能捕获、捕获中断及计数器 HAL_TIM_IC_Start_IT
一共也是两个参数,句柄和通道,句柄没得说直接使用创建,通道就是我们使用的通道二
这下就完成了我们的 Ic_init 的配置
接着我们写中断服务函数 TIM2_IRQHandler
它通常是跟中断处理函数 HAL_TIM_IRQHandler 一起使用,只有一个参数也就是句柄
最后就是回调函数 HAL_TIM_IC_CaptureCallback ,在中断处理函数里面找的到,但是我们的步骤图里面写出来了 就不一一找了
最后就是两个NVIC ,参数就是中断线,抢占优先级和响应优先级