#include "sk9822.h" //写一个字节数据函数 void SK9822_Write_Byte(unsigned char Data) { unsigned char i=0; for(i=0;i<8;i++) { //SDI=(Data&0x80)>>7; if(Data&0x80) { SK9822_SDI_PIN_H(); }else { SK9822_SDI_PIN_L(); } Data<<=1; delay_us(1); SK9822_SCK_PIN_H(); delay_us(1); SK9822_SCK_PIN_L(); delay_us(1); } // unsigned char i; // unsigned char txdata=Data; // for(i = 0; i < 8; i++) // { // SK9822_SCK_PIN_L(); // delay_us(1); // //数据发送 // if(txdata & 0x80){ // SK9822_SDI_PIN_H(); // }else{ // SK9822_SDI_PIN_L(); // } // txdata <<= 1; // delay_us(1); // SK9822_SCK_PIN_H(); // delay_us(1); // } // SK9822_SCK_PIN_L(); } //函数名称:SK9822写数据函数 //输入参数:Bri 亮度调整 高3位固定为1 取值范围00000-11111 //输入参数:RED 红色灰度值 取值范围0-255 //输入参数:GREEN 绿色灰度值 //输入参数:BLUE 蓝色灰度值 void SK9822_Write_Data(unsigned char Bri,unsigned char RED,unsigned char GREEN,unsigned char BLUE) { char i=0; SK9822_Write_Byte(0x00);//写开始帧 SK9822_Write_Byte(0x00); SK9822_Write_Byte(0x00); SK9822_Write_Byte(0x00); for(i=0;i<3;i++) { SK9822_Write_Byte(Bri);//写亮度值 SK9822_Write_Byte(BLUE);//写蓝色灰度 SK9822_Write_Byte(GREEN);//写绿色灰度 SK9822_Write_Byte(RED);//写红色灰度 } SK9822_Write_Byte(0xFF);//写结束帧 SK9822_Write_Byte(0xFF); SK9822_Write_Byte(0xFF); SK9822_Write_Byte(0xFF); } void SK9822_Intit(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(SK9822_RCC, ENABLE); //使能A端口时钟 GPIO_InitStructure.GPIO_Pin =SK9822_SCK_PIN|SK9822_SDI_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz GPIO_Init(SK9822_PORT, &GPIO_InitStructure); //初始化GPIOB GPIO_SetBits(SK9822_PORT,SK9822_SCK_PIN|SK9822_SDI_PIN); SK9822_Write_Data(0,0,0,0); }