初学stm32 --- 高级定时器PWM输入模式
目录
PWM输入模式工作原理
PWM输入模式时序
高级定时器PWM输入模式实验配置步骤
相关HAL库函数介绍
捕获标志位清理的规则
1. 如果使用中断模式
2. 如果使用轮询模式
PWM输入模式工作原理
PWM输入模式时序
高级定时器PWM输入模式实验配置步骤
1,配置定时器基础工作参数 HAL_TIM_IC_Init()
2,定时器捕获输入MSP初始化 HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等
3,配置IC1/2映射、捕获边沿等 HAL_TIM_IC_ConfigChannel()
4,配置从模式,触发源等 HAL_TIM_SlaveConfigSynchro()
5,设置优先级,使能中断 HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()
6,使能捕获、捕获中断及计数器 HAL_TIM_IC_Start_IT()、 HAL_TIM_IC_Start()
7,编写中断服务函数 TIMx_IRQHandler()等 -> HAL_TIM_IRQHandler()
8,编写输入捕获回调函数 HAL_TIM_IC_CaptureCallback()
相关HAL库函数介绍
关键结构体介绍
typedef struct
{
uint32_t ICPolarity; /* 输入捕获触发方式选择,比如上升、下降沿捕获 */
uint32_t ICSelection; /* 输入捕获选择,用于设置映射关系 */
uint32_t ICPrescaler; /* 输入捕获分频系数 */
uint32_t ICFilter; /* 输入捕获滤波器设置 */
} TIM_IC_InitTypeDef;
typedef struct
{
uint32_t SlaveMode; /* 从模式选择 */
uint32_t InputTrigger; /* 输入触发源选择 */
uint32_t TriggerPolarity; /* 输入触发极性 */
uint32_t TriggerPrescaler; /* 输入触发预分频 */
uint32_t TriggerFilter; /* 输入滤波器设置 */
} TIM_SlaveConfigTypeDef;
捕获标志位清理的规则
1. 如果使用中断模式
在中断模式下(即通过 HAL_TIM_IC_Start_IT
启用捕获中断):
- 当捕获事件发生时(如上升沿或下降沿),定时器会自动设置对应的捕获标志位(
CCxIF
标志)。 - HAL 库会在处理中断时自动清除标志位,因此在中断回调函数中,您无需手动清除标志位。
- 在 STM32 的 HAL 库中,当使用输入捕获中断时,HAL 库会在 定时器中断处理函数 中自动清除标志位。具体来说,它是在
HAL_TIM_IRQHandler
函数中完成的。
2. 如果使用轮询模式
在轮询模式下(即通过 HAL_TIM_IC_Start
启用捕获,但未启用中断):
- 您需要手动检测和清除捕获标志位。
- 在读取捕获值后,标志位不会自动清除,必须调用
__HAL_TIM_CLEAR_FLAG
手动清除标志位。