久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2906|回復: 3
收起左側

STM32單片機ws2812b流水燈控制程序

[復制鏈接]
ID:556573 發表于 2023-4-10 15:19 | 顯示全部樓層 |閱讀模式
放假沒事的時候自己學習了下freertos和藍牙小程序這個程序是通過藍牙下發命令來控制ws2812 led
同時也學習了下串口環形列隊

這個小程序由于沒有在這個電腦,需要的可以留言
下面這個是數據處理的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單片機代碼ws2812-c8t6.7z (327.51 KB, 下載次數: 52)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50

查看全部評分

回復

使用道具 舉報

ID:291668 發表于 2023-4-10 21:36 | 顯示全部樓層
跑實時系統的真的很厲害! 學習中
回復

使用道具 舉報

ID:124729 發表于 2023-10-19 15:17 | 顯示全部樓層
值得學習
回復

使用道具 舉報

ID:311400 發表于 2023-10-26 11:51 | 顯示全部樓層
學習學習,小程序可以發我下嗎? 謝謝了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎com | 亚洲免费视频一区 | 亚洲成人一区 | 91精品国产乱码久久久 | 中文字幕在线观看网址 | 久久伊人热 | 成人激情视频 | 亚洲精品一区二三区 | 欧美精品一二三 | 在线播放亚洲 | 欧美日韩精品一区 | 精品日韩在线 | 夜夜欢天天干 | 成人毛片在线播放 | 久久久久久黄色 | 日韩av在线不卡 | 亚洲精品一二三四区 | 9l视频自拍九色9l视频成人 | 99re国产精品 | 国产不卡在线视频 | 黄色国产视频 | 久久五月婷 | 亚洲不卡 | 日本不卡视频 | 欧美色图一区二区 | 日韩高清精品免费观看 | 色天天综合网 | 欧美性猛交xxxx乱大交退制版 | 欧美成人精品一区 | 欧美三级 欧美一级 | av大全在线观看 | www.色日本 | 狠狠操av| 亚洲综合激情网 | 免费看黄色一级片 | 国产成人精品av在线观 | 国产中文在线观看 | 欧美激情啪啪 | 天天操天天舔 | 性大毛片视频 | 国产成人精品视频 |