FreeRTOS任务创建

来源:互联网 发布:西安长臂猿网络 编辑:程序博客网 时间:2024/05/16 12:28

FreeRTOS在任务创建时就会执行一次任务。

int main(void){NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); delay_init();      uart_init(115200);LED_Init();         ReTaskStar =xTaskCreate( (TaskFunction_t) TaskStar,                      (char *        ) "TaskStar",                              (uint16_t      ) TASKSTAR_SIZE,                              (void*         ) NULL,                      (UBaseType_t   ) TASKSTAR_PRIO,              (TaskHandle_t* ) &TaskStart_Handle); if(ReTaskStar == pdPASS) {        printf("起始任务创建成功!\r\n"); }        vTaskStartScheduler();          return 0;}void TaskStar(void* pvParameters){       ReTask_1 = xTaskCreate( (TaskFunction_t) Task_1,                     (char *         ) "Task_1",                             (uint16_t       ) TASK_1_SIZE,                             (void*          ) NULL,                     (UBaseType_t    ) TASK_1_PRIO,            (TaskHandle_t*  ) &Task_1_Handle); if(ReTask_1 == pdPASS){     printf("任务1创建成功\r\n");         }  ReTask_2=xTaskCreate( (TaskFunction_t) Task_2,                     (char *         ) "Task_2",                             (uint16_t       ) TASK_2_SIZE,                             (void*          ) NULL,                     (UBaseType_t    ) TASK_2_PRIO,     (TaskHandle_t*  ) &Task_2_Handle);

       if(ReTask_2 == pdPASS)
        {
           printf("任务2创建成功\r\n");
        }

vTaskDelete(TaskStart_Handle);

}void Task_1(void* pvParameters){             char count = 0;     printf("任务1执行\r\n");              while(1){    count++;    printf("任务1执行第%d次\r\n",count);    vTaskDelay(1000);       }}void Task_2(void* pvParameters){       char count = 0;    
printf("任务1执行\r\n"); 
while(1){ count++;
    printf("任务2执行第%d次\r\n",count);    vTaskDelay(1000);
}}

执行结果如下
起始任务创建成功!
任务1执行
任务1执行第1次
任务1创建成功!
任务2执行
任务2执行第1次
任务2创建成功!
任务1执行第2次
任务2执行第2次
任务1执行第3次
任务2执行第3次
任务1执行第4次
任务2执行第4次

原创粉丝点击