ws2812根据芯片手册查看逻辑0与逻辑1的电平设置以及时序按照GRB的顺序高位先发。
在此尝试4种方法点亮:
1.用nop()指令 原理主要是通过GPIO翻转写0或写1实现逻辑0与逻辑1然后利用cpu执行几个空指令产生短延时的效果。也可自己写延时函数让其做加减乘除从而达到延时的效果
主要代码如下:
#include "main.h"
#define LOW 0
#define HIGH 1
#define DI PD0
#define NUM 24
#define NOP \
{
\
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP();__NOP();__NOP();__NOP(); \
__NOP();__NOP