1、函數 taskYIELD()
此函數用于進行任務切換,此函數本質上是一個宏。
進入臨界區,用于任務函數中,本質上是一個宏。
3、函數 taskEXIT_CRITICAL()
退出臨界區,用于任務函數中,本質上是一個宏。
4、函數 taskENTER_CRITICAL_FROM_ISR()
進入臨界區,用于中斷服務函數中,此函數本質上是一個宏。
5、函數 taskEXIT_CRITICAL_FROM_ISR()
退出臨界區,用于中斷服務函數中,此函數本質上是一個宏。
6、函數 taskDISABLE_INTERRUPTS()
關閉可屏蔽的中斷,此函數本質上是一個宏。
7、函數 taskENABLE_INTERRUPTS()
打開可屏蔽的中斷,此函數本質上是一個宏。
8、函數 vTaskStartScheduler()
啟動任務調度器。
9、函數 vTaskEndScheduler()
關閉任務調度器。
此函數僅用于 X86 架構的處理器,調用此函數以后所有系統時鐘就會停止運行,所有創建的任務都會自動的刪除掉(FreeRTOS 對此函數的解釋是會自動刪除所有的任務,但是在 FreeRTOS 的源碼中沒有找到相關的處理過程,有可能要根據實際情況編寫相關代碼,亦或是 X86 的硬件會自動處理?筆者不了解 X86 架構),多任務性能關閉。可以調用函數vTaskStartScheduler()來重新開啟任務調度器。此函數在文件 tasks.c 中有如下定義:
void
vTaskEndScheduler
(
void
)
{
portDISABLE_INTERRUPTS();
//關閉中斷
xSchedulerRunning=pdFALSE;
//標記任務調度器停止運行
vPortEndScheduler();
//調用硬件層關閉中斷的處理函數
}
函數 vPortEndScheduler()在 port.c 中有定義,這個函數在移植 FreeRTOS 的時候要根據實際使用的處理器來編寫,此處沒有實現這個函數,只是簡單的加了一行斷言,函數如下:
void
vPortEndScheduler
(
void
)
{
configASSERT(uxCriticalNesting==
1000U
L);
}
10、函數 vTaskSuspendAll()
掛起任務調度器,調用此函數不需要關閉可屏蔽中斷即可掛起任務調度器,此函數在文件tasks.c 中定義。
11、函數 xTaskResumeAll()
此函數用于將任務調度器從掛起壯態恢復。
12、函數 vTaskStepTick()
此 函 數 在 使 用 FreeRTOS 的 低 功 耗 tickless 模 式 的 時 候 會 用 到 , 即 宏 configUSE_TICKLESS_IDLE 為 1。當使能低功耗 tickless 模式以后在執行空閑任務的時候系統時鐘節拍中斷就會停止運行,系統時鐘中斷停止運行的這段時間必須得補上,這個工作就是由 函數 vTaskStepTick()來完成的,此函數在文件 tasks.c 中定義。
-
嵌入式
+關注
關注
5093文章
19178瀏覽量
307712 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62399
發布評論請先 登錄
相關推薦
Cortex-M內核使用FreeRTOS特別注意事項
![Cortex-M<b class='flag-5'>內核</b>使用<b class='flag-5'>FreeRTOS</b>特別注意事項](https://file1.elecfans.com/web2/M00/A5/2A/wKgaomUJR7WAEbv9AAAaerdp8Do163.png)
FreeRTOS實時內核使用指南-中文
freertos使用指南與各類型函數詳細說明
關于FreeRTOS內核的配置說明
FreeRTOS任務控制API函數介紹
從0到1學習FreeRTOS:FreeRTOS 內核應用開發:(一)移植FreeRTOS到STM32第一部分
![從0到1學習<b class='flag-5'>FreeRTOS</b>:<b class='flag-5'>FreeRTOS</b> <b class='flag-5'>內核</b>應用開發:(一)移植<b class='flag-5'>FreeRTOS</b>到STM32第一部分](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS高級篇7---FreeRTOS內存管理分析
![<b class='flag-5'>FreeRTOS</b>高級篇7---<b class='flag-5'>FreeRTOS</b>內存管理分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第18篇---FreeRTOS隊列API函數
![<b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b>隊列API<b class='flag-5'>函數</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第13篇---FreeRTOS內核控制
![<b class='flag-5'>FreeRTOS</b>系列第13篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內核</b><b class='flag-5'>控制</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第11篇---FreeRTOS任務控制
![<b class='flag-5'>FreeRTOS</b>系列第11篇---<b class='flag-5'>FreeRTOS</b>任務<b class='flag-5'>控制</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第6篇---FreeRTOS內核配置說明
![<b class='flag-5'>FreeRTOS</b>系列第6篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內核</b>配置說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論