用stm32产生pwm来控制led光源的输出,在初始的情况下,我上电的瞬间led的光源会闪一下,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用stm32产生pwm来控制led光源的输出,在初始的情况下,我上电的瞬间led的光源会闪一下,相关的知识,希望对你有一定的参考价值。

我想知道怎么解决这个问题?谢谢!

你看下程序是不是初始化io口时led连着的io输出会让它亮着(不知道你的电路是高电平亮还是低电平亮),你先初始化io时灯亮,然后一小段延时后才开启了pwm,所以上电时会瞬间亮下。。。这样的话程序先给io赋值让灯灭应该就行了。。如果不是这个原因,看看你的电路会不会是有电容连着灯,给等充电导致的。。。 参考技术A 你初始时,把占空比设为0追答

你上代码,我帮你看看

参考技术B 1K欧姆下拉到地

怎样使stm32f4内部产生正弦波驱动wm8978发出声音

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
STM32的定时器除了TIM6和7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出!这里我们仅利用TIM3的CH2产生一路PWM输出。
要使STM32的通用定时器TIMx产生PWM输出,我们会用到3个寄存器,来控制PWM的。这三个寄存器分别是:捕获/比较模式寄存器(TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器(TIMx_CCR1~4)。(注意,还有个TIMx的ARR寄存器是用来控制pwm的输出频率)

首先是捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有2个,TIMx _CCMR1和TIMx _CCMR2。TIMx_CCMR1控制CH1和2,而TIMx_CCMR2控制CH3和4。
其次是捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入输出通道的开关。
最后是捕获/比较寄存器(TIMx_CCR1~4),该寄存器总共有4个,对应4个输通道CH1~4。4个寄存器都差不多,说的简单一点,这个寄存器就是用来设置pwm的占空比的。
参考技术A 内部,用PWM调制。 参考技术B 用运放做吧

以上是关于用stm32产生pwm来控制led光源的输出,在初始的情况下,我上电的瞬间led的光源会闪一下,的主要内容,如果未能解决你的问题,请参考以下文章

STM32通用定时器PWM输出

开关电源,STM32单片机产生PWM控制MOS管通断,这个如何用电压反馈来控制PWM的占空比?

如何让stm32产生多路输出 PWM 最好有代码

怎样使stm32f4内部产生正弦波驱动wm8978发出声音

STM32怎么实现精确控制PWM输出数量同时能改变频率

STM32使用PWM控制LED灯的亮灭程度