同一定时器上有多个中断-STM32F413ZH

时间:2019-01-22 11:15:09

标签: timer interrupt capture pwm stm32f4

是否可以在同一计时器(STM32F103)上管理多个中断?

我正在使用计时器8(TIM8通道2)的捕获模式来计算风扇的速度(每分钟旋转)。风扇每次旋转都会产生一个平方信号,因此我只需要获取TIM8的值即可获得旋转周期:

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)  {

 if (htim->Instance==TIM8){

 FanSpeedPeriodFan1 = __HAL_TIM_GetCompare(&FAN_SPEED1_TIMx,TIM_CHANNEL_2);//read TIM5 channel 2 capture value

 __HAL_TIM_SetCounter(&FAN_SPEED1_TIMx, 0);    //reset counter
 }
}

这里一切正常,软件每两个上升沿落在Callback中。现在,我想检测风扇是否阻塞,因此引脚上没有方形信号。为此,我想使用计时器更新事件。如果计时器达到最大值并从0重新开始,我想设置一个中断或事件。

我知道这种行为是可能的,它写在RM中: RM

我试图设置多个寄存器(如TIM8_EGR,UG位),但目前效果不佳,当计时器达到最大值时不会发生中断。

如果有人可以帮助我,我将非常感激。

0 个答案:

没有答案