【FreeRTOS】小白进阶之如何动态设置FreeRTOS任务优先级

文章主要介绍如何动态改变任务优先级,同时简析如何使用任务 handle。

1、头文件定义及任务创建

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


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

// 定义任务 handle
TaskHandle_t xTask2Handle;

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

	// 传递任务 handle:xTask2Handle
	xTaskCreate( vTask2, "Task 2", 1000, NULL, 1, &xTask2Handle );

	// 开始调度任务
	vTaskStartScheduler();	

	for( ;; );
	return 0;
}

2、任务优先级动态配置

void vTask1( void *pvParameters )
{
    UBaseType_t uxPriority;

	// 获取任务优先级
	uxPriority = uxTaskPriorityGet( NULL );

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

		// 通过任务 handle 动态设置任务 2 优先级
		vPrintString( "About to raise the Task2 priority\r\n" );
		vTaskPrioritySet( xTask2Handle, ( uxPriority + 1 ) );
	}
}

void vTask2( void *pvParameters )
{
    UBaseType_t uxPriority;

	// 获取当前任务优先级
	uxPriority = uxTaskPriorityGet( NULL );

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

		// 设置任务2优先级
		vPrintString( "About to lower the Task2 priority\r\n" );
		vTaskPrioritySet( NULL, ( uxPriority - 2 ) );
	}
}

 

你可能感兴趣的:(FreeRTOS系统开发)