Перевод может содержать ошибки. Читайте первоисточник: FreeRTOS Task Control API Functions - vTaskPrioritySet()
Назад: [uxTaskPriorityGet()] | Вверх: [ИПП: Управление задачами] | Вперёд: [vTaskSuspend()] |
Функция объявляется в файле task.h
void vTaskPrioritySet( TaskHandle_t xTask,
UBaseType_t uxNewPriority );
Настройка INCLUDE_vTaskPrioritySet в файле FreeRTOSConfig.h должна быть установлена в 1. Без этого функция недоступна.
Установка приоритета любой задачи.
Если установленный приоритет выше, чем приоритет выполняемой задачи, перед возвратом из функции будет выполнено переключение контекста.
Параметры:
xTask |
Дескриптор запрашиваемой задачи. Передача NULL в качестве аргумента приводит к установке приоритета вызывающей задачи. |
uxNewPriority | Приоритет, который будет установлен задаче. Приоритет проверяется ловушкой ошибок (макрос configASSERT). Значение должно быть меньше, чем configMAX_PRIORITIES. Если макрос configASSERT не определён, приоритет будет молча ограничен значением (configMAX_PRIORITIES - 1). |
Возвращаемое значение:
Отсутствует.
Пример использования:
void vAFunction( void )
{
TaskHandle_t xHandle;
/* Создаём задачу, сохраняем её дескриптор. */
xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
/* ... */
/* Используем дескриптор для увеличения приоритета созданной задачи. */
vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );
/* ... */
/* Используем аргумент-дескриптор NULL для увеличения приоритета данной задачи до
такого же значения. */
vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
}