工作环境:STM32CubeIDE 1.10.0 , WIN10, STM32H743VIT6
使用PWM输出脉冲,工作模式为:TIM1的PWM Generation Channel 1 and 1N,脉冲输出正常,选中所有的中断函数,就是无法正常调用中断函数。无法进入下面的任何一个中断函数:
TIM1_BRK_IRQHandler(), TIM1_UP_IRQHandler(),TIM1_TRG_COM_IRQHandler(),TIM1_CC_IRQHandler();
故障解决办法
step1:使用HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_1); 启动定时器中断,不起作用。
无效代码如下:
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_1);
Step2:定时器1启动后添加下面2行代码,有效代码如下:
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
__HAL_TIM_ENABLE_IT(&htim1, TIM_IT_CC1);
TIM1->CR1 |= 0x01;//start timer1;
成功进入中断:TIM1_CC_IRQHandler(); 就可以添加回调函数进行使用了。
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1)
{
//添加回调代码
}
}
Step3:停止定时器1 的代码如下:
TIM1->CR1 &= ~(0x01);//stop timer1;