1、函數(shù) taskYIELD()
此函數(shù)用于進(jìn)行任務(wù)切換,此函數(shù)本質(zhì)上是一個(gè)宏。
2、函數(shù) taskENTER_CRITICAL()
進(jìn)入臨界區(qū),用于任務(wù)函數(shù)中,本質(zhì)上是一個(gè)宏。
3、函數(shù) taskEXIT_CRITICAL()
退出臨界區(qū),用于任務(wù)函數(shù)中,本質(zhì)上是一個(gè)宏。
4、函數(shù) taskENTER_CRITICAL_FROM_ISR()
進(jìn)入臨界區(qū),用于中斷服務(wù)函數(shù)中,此函數(shù)本質(zhì)上是一個(gè)宏。
5、函數(shù) taskEXIT_CRITICAL_FROM_ISR()
退出臨界區(qū),用于中斷服務(wù)函數(shù)中,此函數(shù)本質(zhì)上是一個(gè)宏。
6、函數(shù) taskDISABLE_INTERRUPTS()
關(guān)閉可屏蔽的中斷,此函數(shù)本質(zhì)上是一個(gè)宏。
7、函數(shù) taskENABLE_INTERRUPTS()
打開(kāi)可屏蔽的中斷,此函數(shù)本質(zhì)上是一個(gè)宏。
8、函數(shù) vTaskStartScheduler()
啟動(dòng)任務(wù)調(diào)度器。
9、函數(shù) vTaskEndScheduler()
關(guān)閉任務(wù)調(diào)度器。
此函數(shù)僅用于 X86 架構(gòu)的處理器,調(diào)用此函數(shù)以后所有系統(tǒng)時(shí)鐘就會(huì)停止運(yùn)行,所有創(chuàng)建的任務(wù)都會(huì)自動(dòng)的刪除掉(FreeRTOS 對(duì)此函數(shù)的解釋是會(huì)自動(dòng)刪除所有的任務(wù),但是在 FreeRTOS 的源碼中沒(méi)有找到相關(guān)的處理過(guò)程,有可能要根據(jù)實(shí)際情況編寫(xiě)相關(guān)代碼,亦或是 X86 的硬件會(huì)自動(dòng)處理?筆者不了解 X86 架構(gòu)),多任務(wù)性能關(guān)閉。可以調(diào)用函數(shù)vTaskStartScheduler()來(lái)重新開(kāi)啟任務(wù)調(diào)度器。此函數(shù)在文件 tasks.c 中有如下定義:
void
vTaskEndScheduler
(
void
)
{
portDISABLE_INTERRUPTS();
//關(guān)閉中斷
xSchedulerRunning=pdFALSE;
//標(biāo)記任務(wù)調(diào)度器停止運(yùn)行
vPortEndScheduler();
//調(diào)用硬件層關(guān)閉中斷的處理函數(shù)
}
函數(shù) vPortEndScheduler()在 port.c 中有定義,這個(gè)函數(shù)在移植 FreeRTOS 的時(shí)候要根據(jù)實(shí)際使用的處理器來(lái)編寫(xiě),此處沒(méi)有實(shí)現(xiàn)這個(gè)函數(shù),只是簡(jiǎn)單的加了一行斷言,函數(shù)如下:
void
vPortEndScheduler
(
void
)
{
configASSERT(uxCriticalNesting==
1000U
L);
}
10、函數(shù) vTaskSuspendAll()
掛起任務(wù)調(diào)度器,調(diào)用此函數(shù)不需要關(guān)閉可屏蔽中斷即可掛起任務(wù)調(diào)度器,此函數(shù)在文件tasks.c 中定義。
11、函數(shù) xTaskResumeAll()
此函數(shù)用于將任務(wù)調(diào)度器從掛起壯態(tài)恢復(fù)。
12、函數(shù) vTaskStepTick()
此 函 數(shù) 在 使 用 FreeRTOS 的 低 功 耗 tickless 模 式 的 時(shí) 候 會(huì) 用 到 , 即 宏 configUSE_TICKLESS_IDLE 為 1。當(dāng)使能低功耗 tickless 模式以后在執(zhí)行空閑任務(wù)的時(shí)候系統(tǒng)時(shí)鐘節(jié)拍中斷就會(huì)停止運(yùn)行,系統(tǒng)時(shí)鐘中斷停止運(yùn)行的這段時(shí)間必須得補(bǔ)上,這個(gè)工作就是由 函數(shù) vTaskStepTick()來(lái)完成的,此函數(shù)在文件 tasks.c 中定義。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19105瀏覽量
304829 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62144
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論