久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
ws2812b芯片驅動程序
[打印本頁]
作者:
nbhannah
時間:
2019-7-3 10:36
標題:
ws2812b芯片驅動程序
ws2812b驅動程序
單片機源程序如下:
#include "bsp_ws2812b.h"
#include "bsp.h"
#define TIM4CCR1ADDR 0x40000834
#define TIM4CCR2ADDR 0x40000838
volatile uint8_t LEDbuffer[LED_BUFFER_SIZE];
static GPIO_InitTypeDef tim4ch1pwm =
{
.GPIO_Pin = GPIO_Pin_6,
.GPIO_Speed = GPIO_Speed_50MHz,
.GPIO_Mode = GPIO_Mode_AF_PP
};
static GPIO_InitTypeDef tim4ch2pwm =
{
.GPIO_Pin = GPIO_Pin_7,
.GPIO_Speed = GPIO_Speed_50MHz,
.GPIO_Mode = GPIO_Mode_AF_PP
};
static DMA_InitTypeDef dmachan1 =
{
.DMA_PeripheralBaseAddr = ( uint32_t )&TIM4->CCR1,
.DMA_MemoryBaseAddr = ( uint32_t ) ( &LEDbuffer[0] ),
.DMA_DIR = DMA_DIR_PeripheralDST,
.DMA_BufferSize = LED_BUFFER_SIZE + 1,
.DMA_PeripheralInc = DMA_PeripheralInc_Disable,
.DMA_MemoryInc = DMA_MemoryInc_Enable,
.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord,
.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte,
.DMA_Mode = DMA_Mode_Circular,
.DMA_Priority = DMA_Priority_High,
.DMA_M2M = DMA_M2M_Disable
};
static DMA_InitTypeDef dmachan4 =
{
.DMA_PeripheralBaseAddr = ( uint32_t )&TIM4->CCR2,
.DMA_MemoryBaseAddr = ( uint32_t ) ( &LEDbuffer[0] ),
.DMA_DIR = DMA_DIR_PeripheralDST,
.DMA_BufferSize = LED_BUFFER_SIZE + 1,
.DMA_PeripheralInc = DMA_PeripheralInc_Disable,
.DMA_MemoryInc = DMA_MemoryInc_Enable,
.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord,
.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte,
.DMA_Mode = DMA_Mode_Circular,
.DMA_Priority = DMA_Priority_High,
.DMA_M2M = DMA_M2M_Disable
};
static TIM_TimeBaseInitTypeDef tim4 =
{
.TIM_Period = TIMER_PERIOD - 1,
.TIM_Prescaler = 0,
.TIM_ClockDivision = TIM_CKD_DIV1,
.TIM_CounterMode = TIM_CounterMode_Up
};
static TIM_OCInitTypeDef timingmode =
{
.TIM_OCMode = TIM_OCMode_PWM1,
.TIM_OutputState = TIM_OutputState_Enable,
.TIM_Pulse = 0,
.TIM_OCPolarity = TIM_OCPolarity_High
};
/*************************************************************
* 函 數(shù) 名 : WS2812_Init
* 函數(shù)描述 : 初始化
* 返 回 值 : none
* 輸入?yún)?shù) : none
* 輸出參數(shù) : none
*************************************************************/
void WS2812_Init ()
{
RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE );
// RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM4, ENABLE );
GPIO_Init ( GPIOB, &tim4ch1pwm );
GPIO_Init ( GPIOB, &tim4ch2pwm );
/* 初始化時基 */
TIM_TimeBaseInit ( TIM4, &tim4 );
/* 初始化channel1 */
TIM_OC1PreloadConfig ( TIM4, TIM_OCPreload_Enable );
TIM_OC1Init ( TIM4, &timingmode );
/* 初始化channel2 */
TIM_OC2PreloadConfig ( TIM4, TIM_OCPreload_Enable );
TIM_OC2Init ( TIM4, &timingmode );
// /* 初始化DMA1 */
RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_DMA1, ENABLE );
/* 初始化DMA1通道 */
DMA_Init ( DMA1_Channel1, &dmachan1 );
DMA_Init ( DMA1_Channel4, &dmachan4 );
TIM_DMACmd ( TIM4, TIM_DMA_CC1, ENABLE );
TIM_DMACmd ( TIM4, TIM_DMA_CC2, ENABLE );
/* 使能DMA中斷 */
DMA_ITConfig ( DMA1_Channel1, DMA_IT_TC | DMA_IT_TE, ENABLE );
DMA_ITConfig ( DMA1_Channel4, DMA_IT_TC | DMA_IT_TE, ENABLE );
// TIM_Cmd ( TIM4, ENABLE );
}
/*************************************************************
* 函 數(shù) 名 : WS2812_update
* 函數(shù)描述 : DMA發(fā)送數(shù)據(jù)
* 輸入?yún)?shù) : none
* 輸出參數(shù) : none
* 返 回 值 : none
*************************************************************/
void WS2812_update ( uint8_t group )
{
TIM_Cmd ( TIM4, ENABLE );
if ( group == GROUP_A ) // GROUP_A只有1盞LED燈
{
DMA_SetCurrDataCounter ( DMA1_Channel1, LED_BUFFER_SIZE );
DMA_Cmd ( DMA1_Channel1, ENABLE );
TIM_DMACmd ( TIM4, TIM_DMA_Update, ENABLE ); // 使能TIM4 DMA請求
}
else
{
DMA_SetCurrDataCounter ( DMA1_Channel4, LED_BUFFER_SIZE );
DMA_Cmd ( DMA1_Channel4, ENABLE );
TIM_DMACmd ( TIM4, TIM_DMA_Update, ENABLE ); // 使能TIM4 DMA請求
}
}
/*************************************************************
* 函 數(shù) 名 : SetLedColor
* 函數(shù)描述 : 設置某一盞LED顏色
* 輸入?yún)?shù) : index 需要點亮的LED序號(第一盞、第二盞.....)
* 輸出參數(shù) : none
* 返 回 值 : none
*************************************************************/
void SetLedColor ( uint8_t index, uint8_t RED, uint8_t GREEN, uint8_t BLUE )
{
uint8_t tempBuffer[24] = {0};
uint8_t i;
for ( i = 0; i < 8; i++ ) // GREEN data
tempBuffer[i] = ( ( GREEN << i ) & 0x80 ) ? WS2812_1 : WS2812_0;
for ( i = 0; i < 8; i++ ) // RED
tempBuffer[8 + i] = ( ( RED << i ) & 0x80 ) ? WS2812_1 : WS2812_0;
for ( i = 0; i < 8; i++ ) // BLUE
tempBuffer[16 + i] = ( ( BLUE << i ) & 0x80 ) ? WS2812_1 : WS2812_0;
for ( i = 0; i < 24; i++ )
LEDbuffer[RESET_SLOTS_BEGIN + index * 24 + i] = tempBuffer[i];
}
void SetWholeColor ( uint8_t group, uint8_t red, uint8_t green, uint8_t blue )
{
uint32_t index;
if ( group == GROUP_A ) // GROUP_A只有一盞LED燈
{
// SetLedColor ( 0, RED, GREEN, BLUE );
for ( index = 0; index < LED_NUMBER; index++ )
SetLedColor ( index, red, green, blue );
}
else
{
for ( index = 0; index < LED_NUMBER; index++ )
SetLedColor ( index, red, green, blue );
}
}
/****************************************************************
* 函 數(shù) 名:DMA1_Channel1_IRQHandler
* 函數(shù)描述:channel1中斷處理
* 輸入?yún)?shù):none
* 輸出參數(shù):none
* 返回類型:void
*****************************************************************/
void DMA1_Channel1_IRQHandler()
{
OSIntEnter();
TIM_Cmd ( TIM4, DISABLE );
TIM_DMACmd ( TIM4, TIM_DMA_Update, DISABLE ); // 禁止請求
DMA_Cmd ( DMA1_Channel1, DISABLE );
DMA_ClearFlag ( DMA1_FLAG_TC1 );
memset ( ( char * ) LEDbuffer, 0, LED_BUFFER_SIZE );
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
ws2812b.rar
(3.5 KB, 下載次數(shù): 99)
2019-7-3 10:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
yygdzjs
時間:
2020-5-6 17:22
手上一塊 8個WS2812彩燈,沒有資料不知道怎么驅動,想找一下資料。參考一下.謝謝你的分享
作者:
1436405015
時間:
2021-1-15 14:55
參考一下
作者:
Zy1728
時間:
2021-1-27 10:03
16個WS2812也可以驅動嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
www.一区二区三区.com
|
国产一二三区免费视频
|
亚洲欧美精品在线
|
日日骚av
|
久久亚洲国产
|
亚洲国产成人精品女人
|
奇米av
|
国产精品高潮呻吟久久av黑人
|
成人av一区二区在线观看
|
亚洲精品国产成人
|
亚洲 一区
|
日韩欧美在线不卡
|
美女一级毛片
|
久草99
|
大乳boobs巨大吃奶挤奶
|
精品欧美久久
|
99精品视频免费观看
|
亚洲v日韩v综合v精品v
|
欧美国产精品久久久
|
观看av
|
成年人视频在线免费观看
|
国产成人免费视频网站视频社区
|
日韩一区在线播放
|
欧美激情国产日韩精品一区18
|
国产成人精品免费视频大全最热
|
欧美黄色片
|
天堂av在线影院
|
亚洲三级av
|
亚洲综合视频
|
jizz18国产
|
日本不卡一区二区三区在线观看
|
国产欧美一区二区三区在线看
|
精品毛片在线观看
|
一区在线视频
|
欧美日韩福利视频
|
不卡视频在线
|
羞羞的视频网站
|
亚洲精精品
|
91一区
|
久久精品福利视频
|
久久在线
|