关于STM32 PWM输出控制LED亮度问题

2019-08-14 07:25发布

     各路大神,最近刚接触这个实验,碰到的疑惑颇多,希望能帮忙解决解决,谢谢啦。

     首先根据正点的程序,设置PWM输出为模式2,高电平有效,成功控制LED由暗到亮,再由亮到暗。然后,我仅仅改变PWM的模式为模式1,极性不变,发现LED常亮,对此甚是疑惑。

     根据我的理解(不知道对不对),首先模式1在CCRx>CNT时为有效电平,而有效电平为高。在主程序最开始ledpwmval=0,意味着在这个周期内,CNT的值都是大于CCRx的值,通道为
无效电平,OCxREF恒为0,此时led最亮。但是随着ledpwmval 的值增加,在以后的周期内,低电平的占比开始缩小,led的亮度应该降低啊,不应该常亮啊。

     此后,我发现PWM输出模式2,低极性,led也是常亮(同PWM输出模式1,高极性配置的现象)。PWM输出模式1,低级性,led由最暗到最亮(同PWM输出模式2,高级性配置的现象)。由此
引发出另一个问题,我怎么实现led亮度由最亮到灭再到最亮呢???

   

     

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
17602515236
1楼-- · 2019-08-14 11:32
本帖最后由 17602515236 于 2017-8-19 14:21 编辑
Ray0809 发表于 2017-8-19 13:34
我们就看图中PWM2配Low(Channel3)的输出波形,此时输出波形的占空比为20%,我们按这个配置输出到PB5(LED ...

你看一下程序,原子哥的程序把范围设置到了0-300(80kHz最大是到900),所以,这个占空比,最大也只有33%,30%的时候低电平占67%,那肯定是亮的,然后占空比0%的时候,全部都是低电平,那自然也是亮的,所以LED全程都是亮的你可以把300调成900,这样子就会有变化了,只不过亮的时间会长一些
17602515236
2楼-- · 2019-08-14 16:42
PWM一般都是PWM1配High,PWM2配Low,然后你要由亮到灭..那就是看你主函数里while循环里的了,修改占空比呗.....,一开始占空比高就是灭的,一开始占空比低就是亮的
Ray0809
3楼-- · 2019-08-14 17:56
 精彩回答 2  元偷偷看……
17602515236
4楼-- · 2019-08-14 19:41
Ray0809 发表于 2017-8-19 10:23
我应该懂你的意思,要想亮到灭,要么PWM1配High或PWM2配Low,然后在主程序里让ledpwmval的值,从一个较大 ...

C:UsersAdministratorDesktopPWMPWM.jpg
17602515236
5楼-- · 2019-08-15 01:00
PWM.jpg
Ray0809
6楼-- · 2019-08-15 05:51
17602515236 发表于 2017-8-19 11:56

我们就看图中PWM2配Low(Channel3)的输出波形,此时输出波形的占空比为20%,我们按这个配置输出到PB5(LED灯),当占空比增大时,低电平占比越来越少(led灯低电平点亮),led的亮度该降下来,但它是始终保持同一个亮度。还是很不解

一周热门 更多>