新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2020-11-5
- 在线时间
- 2 小时
|
1金钱
测试PWM 中断触发方式发现一个问题,在配置好之后,PWM 能够触发中断运行 ,
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TIM3_Handler);
}
这个中断能够进去,我跟进去查看后发现回调函数是在这个位置:
if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
{
if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) !=RESET)
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
/* Input capture event */
if((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00)
{
HAL_TIM_IC_CaptureCallback(htim);
}
/* Output compare event */
else
{
HAL_TIM_OC_DelayElapsedCallback(htim);
HAL_TIM_PWM_PulseFinishedCallback(htim);
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
}
}
在这里我测试发现,回调函数只会执行 HAL_TIM_OC_DelayElapsedCallback(htim); , 不会执行 HAL_TIM_PWM_PulseFinishedCallback(htim);
不知道这是什么原因?
|
|