文章主要介绍如何动态创建和删除任务。
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 );
}