主控芯片:STM32F103RCT6
编程软件:keil5;sourseinsight4
串口调试工具:XCOM V2.5
有关于PWM关闭之后电平不一的问题
在实际的使用过程中,我发现TIM_Cmd(TIMX, DISABLE)
仅仅只是关闭了PWM的产生,而并不是将PWM波拉低,PWM的高低决定于关闭前一刻电平的高低,因此,想要得到恒定的高电平或者低电平,可以考虑2种方法:
①利用TIM_SetCompareX()//X为通道编号,例如CH3通道X为3
(X为通道编号,例如CH3通道X为3)将占空比调整到100% 或者 0%,这种方法无需关闭PWM,之后还可以调整占空比。
②关闭PWM并强制输出高低电平,这种方法要关掉PWM,打开PWM时需要重新使能通道以及PWM模式,但是不需要重新初始化TIM。(此方法参考:STM32 PWM功能在关闭时GPIO电平不确定的情况)
//关闭PWM并强制输出低电平
TIM_Cmd(TIM4, DISABLE);//关闭PWM
TIM_ForcedOC3Config(TIM4, TIM_ForcedAction_InActive);//强制输出低电平
//打开TIM4,CH3的PWM,并设置为PWM1模式
TIM_SelectOCxM(TIM4, TIM_Channel_3, TIM_OCMode_PWM1);
TIM_CCxCmd(TIM4, TIM_Channel_3, TIM_CCx_Enable);
TIM_Cmd(TIM4, ENABLE);