天天看點

STM32 HAL PWM中斷 相關問題

控制電機,希望得到确定數量的PWM波形

使能PWM中斷

STM32 HAL PWM中斷 相關問題

實測

HAL_TIM_OC_DelayElapsedCallback(htim);
HAL_TIM_PWM_PulseFinishedCallback(htim);      

都會被調用。

在中斷處理函數中也證明了這點

void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
{
  ......

        /* Output compare event */
        else
        {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
          htim->OC_DelayElapsedCallback(htim);
          htim->PWM_PulseFinishedCallback(htim);
#else
          HAL_TIM_OC_DelayElapsedCallback(htim);
          HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
        }

  ......
}
           

失能中斷後,實測兩個函數都不會被調用

是以對PWM的控制使用這兩個都可以?有什麼差別?