对于ws2812的控制方法网络上有很多资料,但对于不同厂家生产的ws2812可能时序有些许差异。
本文主要是添加了DMA的功能,节省了CPU资源
ws2812.h
#ifndef __WS2811_H__
#define __WS2811_H__
#define CODE_1 0XFc // 1111 1100
#define CODE_0 0XC0 // 1100 0000
#define LED_Number 30 //灯珠数量
extern uint8_t LED_Arry[];//缓存数组
typedef struct
{
uint8_t R;
uint8_t G;
uint8_t B;
}Color;
void WS2811_Init(void);
void SPI_SendByte(uint8_t Data);
void WS2811_SendBit(uint8_t Bit);
void WS2811_SendByte(uint8_t byte);
void WS2811_Reset(void);
void WS2811_UpdateArry(uint8_t G,uint8_t R,uint8_t B);
void WS2811_SetArry(void);
void WS2811_Stay_Bright(uint8_t G,uint8_t R,uint8_t B);
void WS2811_lightening(uint8_t G,uint8_t R,uint8_t B);
void WS2811_RunningLED(uint8_t G,uint8_t R,uint8_t B);
void WS2811_Change_Bright(void);
#endif
ws2812初始化