zoukankan      html  css  js  c++  java
  • FreeRTOS 任务创建和删除(静态)

    #define configSUPPORT_STATIC_ALLOCATION 1   //打开静态方法
    
    StackType_t TaskStackBuffer[50];    //任务堆栈大小
    StaticTask_t TaskTCBBuffer;         //任务控制块大小
    
    StackType_t TaskStackBuffer0[50];
    StaticTask_t TaskTCBBuffer0;
    
    StackType_t TaskStackBuffer1[50];
    StaticTask_t TaskTCBBuffer1;
    
    TaskHandle_t taskhandle0;
    TaskHandle_t taskhandle1;
    
    StaticTask_t pxIdleTaskTCBBuffer;
    StackType_t pxIdleTaskStackBuffer[configMINIMAL_STACK_SIZE];
    
    //需要用户添加定义
    void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, 
                                        StackType_t **ppxIdleTaskStackBuffer, 
                                        uint32_t *pulIdleTaskStackSize )
    {
        *ppxIdleTaskTCBBuffer = &pxIdleTaskTCBBuffer;
        *ppxIdleTaskStackBuffer = pxIdleTaskStackBuffer;
        *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
    }
    
    void vTask0(void *t)
    {
        int i = 0;
    
        while(1)
        {
            i++;
            if(i == 5)
            {
                vTaskDelete(taskhandle1);
                printf("vTask0: delete vTask1.
    ");
            }
            printf("vTask: 0.
    ");
            vTaskDelay(1000);
        }
    }
    
    void vTask1(void *t)
    {
        while(1)
        {
            printf("vTask: 1.
    ");
            vTaskDelay(1000);
        }
    }
    
    void start_vTask(void *t)
    {
        taskhandle0 = xTaskCreateStatic( vTask0,
                                        "vTask0",
                                        50,
                                        ( void * ) NULL,
                                        2,
                                        (StackType_t *const)TaskStackBuffer0,
                                        (StaticTask_t *const)&TaskTCBBuffer0 );
    
        taskhandle1 = xTaskCreateStatic( vTask1,
                                        "vTask1",
                                        50,
                                        ( void * ) NULL,
                                        3,
                                        (StackType_t *const)TaskStackBuffer1,
                                        (StaticTask_t *const)&TaskTCBBuffer1 );
        vTaskDelete(NULL);
    }
    
    int main(void)
    {
        xTaskCreateStatic( start_vTask,
                            "start_vTask",
                            50,
                            ( void * ) NULL,
                            1,
                            (StackType_t *const)TaskStackBuffer,
                            (StaticTask_t *const)&TaskTCBBuffer );
    
        vTaskStartScheduler(); 
    }

    运行结果:
    1

  • 相关阅读:
    P3932 浮游大陆的68号岛
    P4595 [COCI2011-2012#5] POPLOCAVANJE
    CF455E Function
    【转载】乱堆的东西
    BZOJ1034 [ZJOI2008]泡泡堂BNB[贪心]
    CSP2019退役记
    BZOJ5206 [Jsoi2017]原力[根号分治]
    luogu3651 展翅翱翔之时 (はばたきのとき)[基环树+贪心]
    BZOJ1040 [ZJOI2008]骑士[基环树DP]
    BZOJ3037 创世纪[基环树DP]
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709524.html
Copyright © 2011-2022 走看看