文章主要介绍如何动态创建和删除任务。

1、头文件定义和启动任务

#include "FreeRTOS.h"
#include "task.h"
#include "supporting_functions.h"

void vTask1( void *pvParameters );
void vTask2( void *pvParameters );

// 定义任务2 handle
TaskHandle_t xTask2Handle;

int main( void )
{
	xTaskCreate( vTask1, "Task 1", 1000, NULL, 1, NULL );

	vTaskStartScheduler();	

	for( ;; );
	return 0;
}

2、动态创建任务2

void vTask1( void *pvParameters )
{
    const TickType_t xDelay100ms = pdMS_TO_TICKS( 100UL );

	for( ;; )
	{
		vPrintString( "Task1 is running\r\n" );

		xTaskCreate( vTask2, "Task 2", 1000, NULL, 2, &xTask2Handle );

		vTaskDelay( xDelay100ms );
	}
}

3、任务动态删除

void vTask2( void *pvParameters )
{
	vPrintString( "Task2 is running and about to delete itself\r\n" );
	vTaskDelete( xTask2Handle );
}