stm32定时器–关闭定时器时保证是低电平方法

  • Post author:
  • Post category:其他


定时器开溢出中断,在中断函数中关闭定时器。。


前提是PWM波形是一个周期内先低后高,


可以设成


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;


TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;


模式1,低电平有效,这样就是先低后高。


具体看链接:

https://blog.csdn.net/qq_41976419/article/details/106840092

更新:

以上并没有保证关闭定时器时是低电平,所以又改了。

先将占空比调到0,也就是全都是低电平,然后在溢出中断中先执行一个周期,下一周期关闭定时器。

change_pulse(0);//先将占空比调为0 全部为低电平

s_Timer_per.tim15_stop_flag=1;

void TIM15_IRQHandler(void)

{


if(TIM_GetITStatus(TIM15, TIM_IT_Update) != RESET)

{

TIM_ClearITPendingBit(TIM15, TIM_IT_Update );

if(s_Timer_per.tim15_stop_flag==1)//修改占空比后先执行一个周期

{


s_Timer_per.tim15_stop_flag=2;

}

else if(s_Timer_per.tim15_stop_flag==2)关闭定时器

{

TIM_Cmd(TIM15, DISABLE);

s_Timer_per.tim15_stop_flag =0;

}

}

}



版权声明:本文为qq_41976419原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。