官方文档参考
129 2.23 uxTaskPriorityGet()
[[FreeRTOS_Reference_Manual_V10.0.0.pdf#page=129&selection=0,3,4,19|FreeRTOS_Reference_Manual_V10.0.0, page 129]]
- 任务相关函数。[[5. 优先级别#^33deb2]]
Priority Define:
优先级别的定义。[[5. 优先级别#^c0fdfa]]Same Priority:
同样的优先级别下,应用程序时怎样运行的。[[5. 优先级别#^eab7c7]]Different Priority:
不同的优先级别下,应用程序时怎样运行的。[[5. 优先级别#^2eac7a]]Modify Priority:
怎样取得任务的优先级别并修改任务的优先级别,让任务在不同的优先级下运行,优先级别翻转。[[5. 优先级别#^62e8f9]]
任务相关函数
^33deb2
获取任务的优先级
task.h
uBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
必须将
INCLUDE_ux_TaskPriorityGet
和configUSE_MUTEXES
定义为1
,此函数才可用。
获得任何任务的基本优先级。任务的基本优先级在互斥锁时,为了避免无限优先级倒置而返回的优先级。
参数:
xTask:
待查询的任务句柄。传递NULL
句柄会导致返回调用任务的基本优先级。
返回:
xTask
的基本优先级。
设置任务的优先级
^8ea88a
task.h
void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
必须将
INCLUDE_ux_TaskPriorityGet
和configUSE_MUTEXES
定义为1
,此函数才可用。
此函数为设置任何任务的优先级。
如果正在设置的优先级高于当前优先级,则函数返回之前会发生上下文切换。
参数:
xTask:
正在设置优先级任务的句柄。空句柄会设置当调用任务的优先级。uxNewPriority:
将要设置任务的优先级。
断言优先级低于
configMAX_priority
。如果未定义configASSERT
,则优先级会被静默限制为(configMAX_PRIORITIES - 1)
。
Priority Define
^c0fdfa
每个任务均被分配了从 0 到 (configMAX_PRIORITY - 1)
的优先级,这个宏被定义在了freertos/config/include/freertos/
的FreeRTOSConfig.h
中。
文件中显示,可配置的优先级数量为25
,因为优先级从0
开始,范围为0 ~ 24
,一共25
个,所以最大优先级是24
。
如果将任务优先级改为超过
24
,程序会崩溃,单片机无限重启。
Same Priority
^eab7c7
如果任务具有同样的优先级,那么任务会共享CPU的时间,用时间片的方法来使每一个任务得到相同的运行时间。另外,在程序中,哪个任务先创建,就先运行。
Different Priority
^2eac7a
如果任务具有不同的优先级,则会优先运行最先创建的任务,其他任务创建完成后,会根据不同任务的优先级来优先运行相对应的任务。
Modify Priority
^62e8f9
设置任务优先级。[[5. 优先级别#^8ea88a]]