打印
[STM32F1]

用3路PWM控制3个R\G\B的灯实现彩灯

[复制链接]
1533|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HT农民|  楼主 | 2020-7-7 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用3路PWM控制3个R\G\B的灯,改为PWM的占空比就可以实现彩灯显示,但是这个PWM占空比如何来调整 的?有相关的例子参考一下吗?

使用特权

评论回复
沙发
TomasLi| | 2020-7-7 17:41 | 只看该作者
因为不知道你用的是哪个系列的芯片,所以以STM32G0为例,说明一下:
在STM32Cube_FW_G0_V1.3.0\Projects\NUCLEO-G071RB\Examples\TIM\TIM_PWMOutput这个路径里就有输出4路PWM的例子.直接修改其中的CCRx(x=1,2,3,4)就可以修改占空比了.

To get TIM1 output clock at 24 KHz, the period (ARR)) is computed as follows:
       ARR = (TIM1 counter clock / TIM1 output clock) - 1
           = 2295

    TIM1 Channel1 duty cycle = (TIM1_CCR1/ TIM1_ARR + 1)* 100 = 50%
    TIM1 Channel2 duty cycle = (TIM1_CCR2/ TIM1_ARR + 1)* 100 = 37.5%
    TIM1 Channel3 duty cycle = (TIM1_CCR3/ TIM1_ARR + 1)* 100 = 25%
    TIM1 Channel4 duty cycle = (TIM1_CCR4/ TIM1_ARR + 1)* 100 = 12.5%

使用特权

评论回复
板凳
HT农民|  楼主 | 2020-7-7 17:57 | 只看该作者
TomasLi 发表于 2020-7-7 17:41
因为不知道你用的是哪个系列的芯片,所以以STM32G0为例,说明一下:
在STM32Cube_FW_G0_V1.3.0\Projects\NUCLE ...

现在CCRx(x=0\1\2)的寄存器是0~255。如果有个定时器每隔1MS就改变一次占空比,这个各自占空比CCRx的参数是多少的?比喻:第一个1MS定时:CCR0=255,CCR1=100,CCR2=0,第二个1MS定时:CCR0=255,CCR1=80,CCR2=0,……如此类推。这个改变占空比参数要怎么样做才最合理?

使用特权

评论回复
地板
TomasLi| | 2020-7-7 18:09 | 只看该作者
HT农民 发表于 2020-7-7 17:57
现在CCRx(x=0\1\2)的寄存器是0~255。如果有个定时器每隔1MS就改变一次占空比,这个各自占空比CCRx的参数 ...

你这个CCR0和CCR2根本就没有变.只是改变了CCR1.那就在1ms的定时器中断里修改CCR1的值减去20即可. 需要画个软件流程图给你吗?

使用特权

评论回复
5
guanjiaer| | 2020-8-6 18:11 | 只看该作者
配置寄存器啊

使用特权

评论回复
6
heimaojingzhang| | 2020-8-6 18:11 | 只看该作者
手册上写的很清楚啊

使用特权

评论回复
7
keaibukelian| | 2020-8-6 18:11 | 只看该作者
我都是用定时器 没用过pwm啊

使用特权

评论回复
8
labasi| | 2020-8-6 18:12 | 只看该作者
三路都用pwm的话 频率是一样的

使用特权

评论回复
9
paotangsan| | 2020-8-6 18:12 | 只看该作者
官网就有例程啊应该

使用特权

评论回复
10
renzheshengui| | 2020-8-6 18:12 | 只看该作者
相关博客上应该有很多

使用特权

评论回复
11
wakayi| | 2020-8-6 18:13 | 只看该作者
楼主解决问题了吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

59

帖子

1

粉丝