xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-07-06
  • 語(yǔ)言: 其他
  • 標(biāo)簽: WS2812??stm32f103??RGB燈??

資源簡(jiǎn)介

該資源包含了連個(gè)文件,分別是.c和.h,可以實(shí)現(xiàn)stm32f103c8t6開發(fā)板控制24位WS2812 5050RGB燈圈,其中燈個(gè)數(shù)可隨意修改,在拿到文件后不能很好控制RGB燈時(shí),需自行拿邏輯分析儀測(cè)出1,0碼所需的延時(shí)時(shí)間。

資源截圖

代碼片段和文件信息

#include?“l(fā)ed.h“
#include?“delay.h“//滴答時(shí)鐘系統(tǒng)延時(shí)相關(guān)頭文件,自行添加。因?yàn)橄旅婧瘮?shù)中用到了Delay_us操作,不用系統(tǒng)滴答的話,可用自定義的延時(shí)函數(shù)HAL_Delay
??//不過延時(shí)數(shù)值要盡量大一些最好用邏輯分析儀測(cè)一下時(shí)長(zhǎng)


/*
WS2812?5050RGBLED燈是一款可級(jí)聯(lián)無限個(gè)的,內(nèi)置處理芯片的,由10時(shí)序控制的,色彩控制及呈現(xiàn)良好的燈
其10碼對(duì)時(shí)間的要求相對(duì)苛刻,在選型處理器時(shí)一定要注意,處理器的處理頻率是否達(dá)到所需控制量級(jí),像一
般的51單片機(jī)是不能很好的控制這款燈的,但一般M系列內(nèi)核的處理器都可以,當(dāng)然集成51內(nèi)核的還有很多處理
速度相對(duì)高一點(diǎn)的芯片,本人沒有做過相應(yīng)測(cè)試,但看到10碼所需的納秒級(jí)別就知道處理器的處理速度不能太
小。
?*/

void??led_init(void)
{
GPIO_InitTypeDef?GPIO_InitStructure;
//PA0
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB?ENABLE?);
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin??=?GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOB?&GPIO_InitStructure);
WS2812?=?1;
}


?
#define?numLEDs?24???//燈的個(gè)數(shù)
unsigned?char?buf_R[numLEDs]?=?{0};//顏色緩沖
unsigned?char?buf_G[numLEDs]?=?{0};
unsigned?char?buf_B[numLEDs]?=?{0};
?
void?RGB_Set_Up();??//送0碼
void?RGB_Set_Down();?//送1碼
?
?
?
void?HAL_Delay(unsigned?int?t)
{
while(t--);
}
?
//1碼高電平850ns?低電平400ns?誤差正負(fù)150ns
void?RGB_Set_Up()
{
//這里要直接對(duì)寄存器進(jìn)行操作,是因?yàn)閃S2812?5050RGB燈對(duì)時(shí)間要求非常苛刻,對(duì)寄存器直接操作可以降低使用庫(kù)函數(shù)處理時(shí)耗損時(shí)間的影響
GPIOB->BSRR?=?0x01;
//經(jīng)過邏輯分析儀調(diào)試的延時(shí),這個(gè)很重要,不同的MPU其處理速度不同,需用邏輯分析儀獲得這個(gè)延時(shí)時(shí)長(zhǎng)是否達(dá)到要求,下同。
HAL_Delay(4);
GPIOB->BRR??=?0x01;
HAL_Delay(1);
__nop;
}
?
//1碼高電平400ns?低電平850ns?誤差正負(fù)150ns
void?RGB_Set_Down()
{
GPIOB->BSRR?=?0x01;
??//經(jīng)過邏輯分析儀調(diào)試的延時(shí)
HAL_Delay(1);
GPIOB->BRR??=?0x01;
HAL_Delay(2);
}
?
//發(fā)送24位數(shù)據(jù)
void?Send_2811_24bits(unsigned?char?G8unsigned?char?R8unsigned?char?B8)
{
??
??unsigned?int?n?=?0;
??//發(fā)送G8位
for(n=0;n<8;n++)
{
G8<<=n;
if(G8&0x80?==?0x80)
{
RGB_Set_Up();
}
else??
{
??RGB_Set_Down();
}
}
//發(fā)送R8位
for(n=0;n<8;n++)
{
R8<<=n;
if(R8&0x80?==?0x80)
{
RGB_Set_Up();
}
else??
{
RGB_Set_Down();
}

}
//發(fā)送B8位
??for(n=0;n<8;n++)
{
B8<<=n;
if(B8&0x80?==?0x80)
{
RGB_Set_Up();
}
else??
{
??RGB_Set_Down();
}
}
}
//復(fù)位碼
void?RGB_Rst()
{
WS2812?=?0;
Delay_us(50);
}
//把24位數(shù)據(jù)GRB碼轉(zhuǎn)RGB
void?Set_Colour(unsigned?char?runsigned?char?gunsigned?char?b)
{
??unsigned?char?i;
for(i=0;i ??{
??buf_R[i]?=?r;?//緩沖
??buf_G[i]?=?g;
??buf_B[i]?=?b;
}
for(i=0;i {
Send_2811_24bits(buf_G[i]buf_R[i]buf_B[i]);//????
}
}
//某一個(gè)點(diǎn)顯示的顏色
void?SetPointColour(unsigned?int?numunsigned?char?runsigned?char?gunsigned?char?b)
{
??unsigned?char?i;
for(i=0;i ??{
buf_R[num]?=?r;//??
??buf_G[num]?=?g;
??buf_B[num]?=?b;
}
for(i=0;i {
Send_2811_24bits(buf_G[i]buf_R[i]buf_B[i]);//????
}
}
?
//顏色交換24位不拆分發(fā)
void?SetPixelColor(unsigned?char?numunsigned?long?c)
{
??unsigned?char?i;
for(i=0;i ??{
buf_R[num]?=?(unsigned?char)(c>>16);
??buf_G[num]?=?(unsigned?char)(c>>8);
??buf_B[num]?=?(unsigned?char)(c);
}
for(i=0;i

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-09?11:28??WS2812_RGBLED\
?????文件????????6516??2019-01-09?12:03??WS2812_RGBLED\led.c
?????文件????????1226??2019-01-09?11:43??WS2812_RGBLED\led.h

評(píng)論

共有 條評(píng)論