功能:STM32F103 点亮1000个ws2812b,灯色一样就可以
目前两种解决方式:
1、循环里面:GPIO+延时翻转,这样比较消耗资源,且不能被打断,目前没有采用
2、使用PWM+DMA,这里面也有两种方式,同样也存在两个问题
若采用PWM+DMA的DMA_Mode_Normal(正常模式),那么意味着一次性设置完pwm占空比的设定值,一个灯需要24个占空比的设置值,使用半字类型,那么内存需要:1000242,使用内存较大,裸机的话也可以接受,使用系统就会有问题
若采用PWM+DMA的DMA_Mode_Circular(循环模式),在所有灯设置一个颜色的情况下,只需要重复搬运一个灯24个占空比的设置值就可以了,内存占用少,效率高,但是实际中发现,DMA一次搬运完,第二次搬运这之间会有比较大的延迟,导致时序乱了,后面的灯亮不起来,或者颜色不对。
所以问下有什么办法可以消除,循环模式下重复搬运之间的延时?也就是自动加载初始值所需的时间。