找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2654|回复: 0
打印 上一主题 下一主题
收起左侧

灯带控制程序

[复制链接]
跳转到指定楼层
楼主
ID:350956 发表于 2018-6-13 11:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/****************************************************
* Function Name  : WS2812_WriteRGB
* Description    : ledμÆ′ø¿ØÖÆ3ìDò
* Input          :
* Output         : None
* Return         : None
******************************************************/

void WS2812_WriteRGB(u16 Addr, u8 Num, u8 R8, u8 G8, u8 B8)
{
        u16 i = 0,itemp = 0;
   for (itemp=0;itemp<(Num);itemp++)
   {
                u32 RGB24 = (R8<<8)+(G8<<16)+(B8<<0);

                 for(i=0;i<(24);i++)
                 {
                           if(((RGB24<<i)&0x800000))
                           {
                                        LED_BYTE_Buffer[Addr*24*Num+itemp*24+i] = TIMING_ONE;
                           }
                           else
                           {
                                        LED_BYTE_Buffer[Addr*24*Num+itemp*24+i] = TIMING_ZERO;
                           }
                 }
   }

        DMA_SetCurrDataCounter(DMA1_Channel2, WS2812_Buffer_Size);         // »ñè¡μ±Ç°ê£óàêy¾Yá¿′óD¡load number of bytes to be transferred
        DMA_Cmd(DMA1_Channel2, ENABLE);                         //ê1Äü DMA ′«êäí¨μà enable DMA channel 6
        TIM_Cmd(TIM2, ENABLE);                                                 // enable Timer 3
        while(!DMA_GetFlagStatus(DMA1_FLAG_TC2)) ;         // 2éÑˉ DMA í¨μà 2 ′«êäêÇ·ñíê3éwait until transfer complete
        TIM_Cmd(TIM2, DISABLE);         // disable Timer 3
        DMA_Cmd(DMA1_Channel2, DISABLE);                         // disable DMA channel 6
        DMA_ClearFlag(DMA1_FLAG_TC2);

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表