標(biāo)題:
STM32單片機(jī)ws2812b流水燈控制程序
[打印本頁]
作者:
liu51hei
時間:
2023-4-10 15:19
標(biāo)題:
STM32單片機(jī)ws2812b流水燈控制程序
放假沒事的時候自己學(xué)習(xí)了下freertos和藍(lán)牙小程序這個程序是通過藍(lán)牙下發(fā)命令來控制ws2812 led
同時也學(xué)習(xí)了下串口環(huán)形列隊(duì)
這個小程序由于沒有在這個電腦,需要的可以留言
下面這個是數(shù)據(jù)處理的task,完全是新手
void rev_data_task(void)
{
u8 mode = 0xff;
u8 flag1=0;
u8 flag2=0;
u8 flag3=0;
int size =0;
while(1){
size = find_screen_cmd(screen_cmd_buffer);
if(size != 0)
{
rev_data = (PT_REDATA)screen_cmd_buffer;
switch(rev_data->mode)
{
case 1:
mode = rev_data->mode;
if(flag1==1)
break;
taskENTER_CRITICAL();
flag1=1;
flag2=0;
flag3=0;
if(mode1_task_handler!=NULL)
{
vTaskDelete(mode1_task_handler);
mode1_task_handler=NULL;
}
if(mode2_task_handler!=NULL)
{
vTaskDelete(mode2_task_handler);
mode2_task_handler=NULL;
}
if(mode3_task_handler!=NULL)
{
vTaskDelete(mode3_task_handler);
mode3_task_handler=NULL;
}
xTaskCreate((TaskFunction_t)rgb_mode1, "mode1", 1024, NULL, 2, (TaskHandle_t*)&mode1_task_handler);
taskEXIT_CRITICAL();
Led_Set(1);
memset(screen_cmd_buffer,0,CMD_MAX_BUFFER);
vTaskDelay(10);
break;
case 2:
mode = rev_data->mode;
if(flag2==2)
break;
taskENTER_CRITICAL();
flag2=2;
flag1=0;
flag3=0;
if(mode1_task_handler!=NULL)
{
vTaskDelete(mode1_task_handler);
mode1_task_handler=NULL;
}
if(mode2_task_handler!=NULL)
{
vTaskDelete(mode2_task_handler);
mode2_task_handler=NULL;
}
if(mode3_task_handler!=NULL)
{
vTaskDelete(mode3_task_handler);
mode3_task_handler=NULL;
}
xTaskCreate((TaskFunction_t)rgb_mode2, "mode2", 1024, NULL, 2, (TaskHandle_t*)&mode2_task_handler);
taskEXIT_CRITICAL();
Led_Set(1);
memset(screen_cmd_buffer,0,CMD_MAX_BUFFER);
vTaskDelay(10);
break;
case 3:
mode = rev_data->mode;
if(flag3==3)
break;
taskENTER_CRITICAL();
flag3=3;
flag1=0;
flag2=0;
if(mode1_task_handler!=NULL)
{
vTaskDelete(mode1_task_handler);
mode1_task_handler=NULL;
}
if(mode2_task_handler!=NULL)
{
vTaskDelete(mode2_task_handler);
mode2_task_handler=NULL;
}
if(mode3_task_handler!=NULL)
{
vTaskDelete(mode3_task_handler);
mode3_task_handler=NULL;
}
xTaskCreate((TaskFunction_t)rgb_mode3, "mode3", 1024, NULL, 2, (TaskHandle_t*)&mode3_task_handler);
taskEXIT_CRITICAL();
Led_Set(1);
memset(screen_cmd_buffer,0,CMD_MAX_BUFFER);
vTaskDelay(10);
break;
default:
mode = rev_data->mode;
taskENTER_CRITICAL();
flag1=0;
flag2=0;
flag3=0;
if(mode1_task_handler!=NULL)
{
vTaskDelete(mode1_task_handler);
mode1_task_handler=NULL;
}
if(mode2_task_handler!=NULL)
{
vTaskDelete(mode2_task_handler);
mode2_task_handler=NULL;
}
if(mode3_task_handler!=NULL)
{
vTaskDelete(mode3_task_handler);
mode3_task_handler=NULL;
}
set_all_led (0,0,0);
taskEXIT_CRITICAL();
Led_Set(1);
memset(screen_cmd_buffer,0,CMD_MAX_BUFFER);
vTaskDelay(10);
break;
}
}
Led_Set(0);
vTaskDelay(10);
}
}
Keil代碼下載(注意附件只有STM32代碼,不含其他任何資料):
STM32單片機(jī)代碼ws2812-c8t6.7z
(327.51 KB, 下載次數(shù): 52)
2023-4-10 16:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
li64331218
時間:
2023-4-10 21:36
跑實(shí)時系統(tǒng)的真的很厲害! 學(xué)習(xí)中
作者:
yyhyyhyyh
時間:
2023-10-19 15:17
值得學(xué)習(xí)
作者:
longwu4886
時間:
2023-10-26 11:51
學(xué)習(xí)學(xué)習(xí),小程序可以發(fā)我下嗎? 謝謝了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1