OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2472|回复: 1

关于PWM驱动WS2812三基色灯的总结

[复制链接]

4

主题

59

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2018-12-27
在线时间
82 小时
发表于 2018-12-27 09:45:16 | 显示全部楼层 |阅读模式
由于本人刚入门不久,大部分时候,写程序都是需要参考原子哥的例程进行修改,最近接到一个项目是驱动WS2812三基色灯,原子哥例程里边没有这方面的例程(可能我没找到),但是网上一搜索,一大片,就在某网站看了个教学视频,正好是驱动WS2812贴片的,心里大喜,心想老子真是需要什么来什么,看完之后大体明白方法,就是通过DMA不断改变PWM的占空比,来实现灯颜色的变化,那就开始ctrl+C和ctrl+V吧,干了一番,终于出来颜色了,可是一看跟自己想的完全不一样,几经修改最后终于成功了,基本能够按照自己的要求来显示了,但是(重点来了),发现LEd显示的时候,总会有别的灯光的颜色一闪而过,后来拿过来示波器看了一下波形,在传输的PWM波形中,最前边总是有一个小的尖波,脉宽不定,从而会导致PWM偶尔会出现错位的现象,经过对比发现跟那位大神的例程没什么区别呀,最后通过研究说明手册,了解到DAM采用                TIM_DMACmd(TIM3,TIM_DMA_Update,ENABLE);这种方式更新的时候,要直接操作CCR的影子寄存器,而不是去操作预装再寄存器,具体是操作CCMR寄存器,使能OCXFE标志位,失能OCXPE标志位,从而能能够实现在定时器溢出之前,占空比已经更新完成。以下是部分代码
DMA初始化.png
LED初始化.png
LED驱动程序1.png
LED驱动程序2.png
定时器.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-27 15:18:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表