FreeRTOS任务创建

xiaoxiao2021-02-28  94

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次

转载请注明原文地址: https://www.6miu.com/read-63422.html

最新回复(0)