久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
RGB stm32單片機ws2812 PWM+DMA LED控制程序
[打印本頁]
作者:
JJH555
時間:
2020-3-17 17:41
標題:
RGB stm32單片機ws2812 PWM+DMA LED控制程序
RGB stm32單片機ws2812LED控制,使用的是硬件驅動PWM + DMA
單片機源程序如下:
#include "ws2812b.h"
#include "stdlib.h"
#include "delay.h"
void WS2812_Send(uint8_t (*color)[3], uint16_t len)
{
uint8_t i;
uint16_t memaddr;
uint16_t buffersize;
buffersize = (len*24)+43; // number of bytes needed is #LEDs * 24 bytes + 42 trailing bytes
memaddr = 0; // reset buffer memory index
while (len)
{
for(i=0; i<8; i++) // RED
{
LED_BYTE_Buffer[memaddr] = ((color[len-1][1]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
memaddr++;
}
for(i=0; i<8; i++) // GREEN data
{
LED_BYTE_Buffer[memaddr] = ((color[len-1][0]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
memaddr++;
}
for(i=0; i<8; i++) // BLUE
{
LED_BYTE_Buffer[memaddr] = ((color[len-1][2]<<i) & 0x0080) ? TIMING_ONE:TIMING_ZERO;
memaddr++;
}
len--;
}
//===================================================================//
//bug:最后一個周期波形是高電平,故增加一個低電平的波形
LED_BYTE_Buffer[memaddr] = 0;
//===================================================================//
memaddr++;
while(memaddr < buffersize)
{
LED_BYTE_Buffer[memaddr] = 0;
memaddr++;
}
DMA_SetCurrDataCounter(DMA1_Channel7, buffersize); // load number of bytes to be transferred
DMA_Cmd(DMA1_Channel7, ENABLE); // enable DMA channel 7
TIM_Cmd(TIM2, ENABLE); // enable Timer 2
while(!DMA_GetFlagStatus(DMA1_FLAG_TC7)) ; // wait until transfer complete
DMA_Cmd(DMA1_Channel7, DISABLE); // disable DMA channel 7
DMA_ClearFlag(DMA1_FLAG_TC7); // clear DMA1 Channel 7 transfer complete flag
TIM_Cmd(TIM2, DISABLE); // disable Timer 2
}
void WS2812_Random() //隨機閃燈
{
uint8_t rgb0[1][3];
rgb0[0][0] = rand()%256;
rgb0[0][1] = rand()%256;
rgb0[0][2] = rand()%256;
WS2812_Send(&rgb0[0],1);
delay_s(1);
}
void WS2812_Red_BLN() //紅色呼吸燈
{
u16 i;
uint8_t rgb0[256][3] ={0,0,0};
for(i=0;i<=255;i++)
{
rgb0[i][0] = i;
}
for(i=0;i<=255;i++)
{
WS2812_Send(&rgb0[i],1);
delay_ms(5);
}
for(i=0;i<=255;i++)
{
rgb0[i][0] = (255 - i);
}
for(i=0;i<=255;i++)
{
WS2812_Send(&rgb0[i],1);
delay_ms(5);
}
delay_ms(500);
}
void WS2812_Green_BLN() //綠色呼吸燈
{
u16 i;
uint8_t rgb0[256][3] ={0,0,0};
for(i=0;i<=255;i++)
{
rgb0[i][1] = i;
}
for(i=0;i<=255;i++)
{
WS2812_Send(&rgb0[i],1);
delay_ms(5);
}
for(i=0;i<=255;i++)
{
rgb0[i][1] = (255 - i);
}
for(i=0;i<=255;i++)
{
WS2812_Send(&rgb0[i],1);
delay_ms(5);
}
delay_ms(500);
}
void WS2812_Blue_BLN() //藍色呼吸燈
{
u16 i;
uint8_t rgb0[256][3] ={0,0,0};
for(i=0;i<=255;i++)
{
rgb0[i][2] = i;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
WS2812B(PWM+DMA).7z
(185.22 KB, 下載次數: 211)
2020-3-17 17:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
1AJ1987402
時間:
2020-5-3 17:51
STC能用?
作者:
longwu4886
時間:
2021-7-29 10:32
LED_BYTE_Buffer[memaddr] = ((color[len-1][1]<<i) & 0x0080)
?
TIMING_ONE:TIMING_ZERO;
這里的問號是什么意思?
作者:
yuexige
時間:
2021-10-13 19:25
單個燈的
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲成网站
|
www.日日干
|
欧美在线视频二区
|
精品国产乱码久久久久久a丨
|
黄色综合
|
一区二区三区福利视频
|
久久免费高清视频
|
亚洲性视频网站
|
在线午夜电影
|
亚洲精品一区二区
|
91久久国产综合久久
|
色婷婷综合网
|
一区日韩
|
国内精品久久久久久
|
一区中文字幕
|
日本激情视频中文字幕
|
99视频免费在线观看
|
伊人久久免费视频
|
日韩免费视频
|
亚洲精品视频一区二区三区
|
国产精品久久久久久久久免费
|
91久久国产综合久久
|
一区二区三区免费看
|
亚洲精品乱码久久久久久9色
|
99reav
|
国产在线区
|
一级毛片黄片
|
久久久久久久久蜜桃
|
日韩小视频在线
|
欧美久久综合
|
日韩一区二区三区在线
|
亚洲精品在线免费观看视频
|
精品一区二区免费视频
|
久久一区
|
av黄色免费
|
国产精品高潮呻吟
|
国产视频线观看永久免费
|
欧美一区二区三区在线免费观看
|
欧美精品一区二区在线观看
|
亚洲第一色站
|
日韩中文一区二区三区
|