FreeRTOS任务优先级数值越小优先级越低,系统在运行过程中允许修改任务优先级
修改任务优先级的主要工作包括:
如果新的优先级大于当前任务优先级,则请求切换
重新设置事件列表值
将任务从原就绪列表中移除并挂接到新的就绪列表中
/* 设置任务优先级 */
void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority)
{
TCB_t *pxTCB;
UBaseType_t uxCurrentBasePriority, uxPriorityUsedOnEntry;
BaseType_t xYieldRequired = pdFALSE;
configASSERT((uxNewPriority < configMAX_PRIORITIES));
/* 任务优先级不能超过最大值 */
if(uxNewPriority >= (UBaseType_t)configMAX_PRIORITIES)
{
uxNewPriority = (UBaseType_t)configMAX_PRIORITIES - (UBaseType_t)1U;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
taskENTER_CRITICAL();
{
/* 通过任务句柄