#include "timer1.h"
#include "at32f421.h"
#include "io.h"
#define WS2812_PWM_PR 149 // 不分频 120Mhz/149+1=800KHz
#define WS2812_PWM_CODE_0 39 // 0码 26%*(WS2812_PWM_PR+1)
#define WS2812_PWM_CODE_1 111 // 1码 (WS2812_PWM_PR+1)-WS2812_PWM_CODE_0
#define WS2812_LEDS_NUM 1 // LED 数量
uint8_t brightness = 0; // 当前亮度
int8_t direction = 1; // 亮度变化方向,1 为增加,-1 为减少
uint16_t ws2812_buffer[WS2812_LEDS_NUM * 24 + 60] = {0}; // LEDS(24个代表一个灯) + 复位
// 将字节数据编码为WS2812B协议要求的PWM波形序列
void WS2812_EncodeByte(uint8_t data, uint16_t *buf)
{
int i;
for (i = 0; i < 8; i++)
{
buf[i] = (data & (1 << (7 - i))) ? WS2812_PWM_CODE_1 : WS2812_PWM_CODE_0;