FreeRTOS V9.0.0 API 函数中文手册 
 
 
 
参阅《FreeRTOS_Reference_Manual_V9.0.0》 
                                              Real Time Engineers ltd. 
 
 
翻译:张振 
2017 年 12 月 
 
 
 
 
 
 
 
 
 
 
 
 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
目录 
第一章 初识 FreeRTOS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 
第二章 任务和调度器 API 函数  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 
2.1 portSWITCH_TO_USER_MODE()    -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6 
2.2 vTaskAllocateMPURegions()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6 
2.3 xTaskAbortDelay()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6 
2.4 xTaskCallApplicationTaskHook()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -7 
2.5 xTaskCheckForTimeOut()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -7 
2.6 xTaskCreate()    -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -7 
2.7 xTaskCreateStatic()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - -8 
2.8 xTaskCreateRestricted()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - -9 
2.9 vTaskDelay()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - 10 
2.10 vTaskDelayUntil()    - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 
2.11 vTaskDelete()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -11 
2.12 taskDISABLE_INTERRUPTS()    - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - - - -11 
2.13 taskENABLE_INTERRUPTS()    - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -11 
2.14 taskENTER_CRITICAL()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11 
2.15 taskENTER_CRITICAL_FROM_ISR()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -12 
2.16 taskEXIT_CRITICAL()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - 13 
2.17 taskEXIT_CRITICAL_FROM_ISR()    - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - -13 
2.18 xTaskGetApplicationTaskTag()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - - - -13 
2.19 xTaskGetCurrentTaskHandle()    - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - 14 
2.20 xTaskGetIdleTaskHandle()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - 14 
2.21 xTaskGetHandle()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -14 
2.22 uxTaskGetNumberOfTasks()    - - - - - - - - - - -- - - - - - - - - - - - - - - -- - - - - - - - - - - - - 15 
2.23 vTaskGetRunTimeStats()    - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - 15 
2.24 xTaskGetSchedulerState()    - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - -- - - - - - - 17 
2.25 uxTaskGetStackHighWaterMark()    - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - 17 
2.26 eTaskGetState()    - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - -17 
2.27 uxTaskGetSystemState()    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -18 
2.28 vTaskGetTaskInfo()    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -18 
2.29 pvTaskGetThreadLocalStoragePointer()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -19 
2.30 pcTaskGetName()    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --19 
2.31 xTaskGetTickCount()    - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -19 
2.32 xTaskGetTickCountFromISR()    - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - 20 
2.33 vTaskList()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 
2.34 xTaskNotify()    - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - -21 
2.35 xTaskNotifyAndQuery()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 22 
2.36 xTaskNotifyAndQueryFromISR()    - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - 22 
2.37 xTaskNotifyFromISR()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 23 
2.38 xTaskNotifyGive()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 23 
2.39 vTaskNotifyGiveFromISR()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 24 
2.40 xTaskNotifyStateClear()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 25 
 
1 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
2.41 ulTaskNotifyTake()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 26 
2.42 xTaskNotifyWait()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -27 
2.43 uxTaskPriorityGet()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -28 
2.44 vTaskPrioritySet()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -29 
2.45 vTaskResume()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -30 
2.46 xTaskResumeAll()    -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -30 
2.47 xTaskResumeFromISR()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 31 
2.48 vTaskSetApplicationTaskTag()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 32 
2.49 vTaskSetThreadLocalStoragePointer()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 33 
2.50 vTaskSetTimeOutState()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -33 
2.51 vTaskStartScheduler()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 34 
2.52 vTaskStepTick()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 35 
2.53 vTaskSuspend()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - -36 
2.54 vTaskSuspendAll()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 36 
2.55 taskYIELD()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 37 
第三章  队列 API 函数    - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - 39 
3.1 vQueueAddToRegistry()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 39 
3.2 xQueueAddToSet()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -39 
3.3 xQueueCreate()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 40 
3.4 xQueueCreateSet()    - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 40 
3.5 xQueueCreateStatic()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 42 
3.6 vQueueDelete()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 43 
3.7 pcQueueGetName()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 43 
3.8 xQueueIsQueueEmptyFromISR()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -44 
3.9 xQueueIsQueueFullFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - 44 
3.10 uxQueueMessagesWaiting()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - 44 
3.11 uxQueueMessagesWaitingFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - -44 
3.12 xQueueOverwrite()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - 45 
3.13 xQueueOverwriteFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -46 
3.14 xQueuePeek()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - -47 
3.15 xQueuePeekFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 48 
3.16 xQueueReceive()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - 48 
3.17 xQueueReceiveFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - -49 
3.18 xQueueRemoveFromSet()    -- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - -50 
3.19 xQueueReset()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - 51 
3.20 xQueueSelectFromSet()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -51 
3.21 xQueueSelectFromSetFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - 51 
3.22 xQueueSend()/xQueueSendToFront()/xQueueSendToBack()    - - - - -- - - - - - - - - - - -52 
3.23 xQueueSendFromISR()/xQueueSendToBackFromISR()/xQueueSendToFrontFromISR() 
          - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 53 
3.24 uxQueueSpacesAvailable()      - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -54                                                                                       
第四章  信号量 API 函数    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - -55 
4.1 vSemaphoreCreateBinary()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - 55 
4.2 xSemaphoreCreateBinary()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - 55 
 
2 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
4.3 xSemaphoreCreateBinaryStatic()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -56 
4.4 xSemaphoreCreateCounting()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -56 
4.5 xSemaphoreCreateCountingStatic()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - -57 
4.6 xSemaphoreCreateMutex()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -58 
4.7 xSemaphoreCreateMutexStatic()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -58 
4.8 xSemaphoreCreateRecursiveMutex()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -59 
4.9 xSemaphoreCreateRecursiveMutexStatic()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - -60 
4.10 vSemaphoreDelete()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - 60 
4.11 uxSemaphoreGetCount()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - 60 
4.12 xSemaphoreGetMutexHolder()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -60 
4.13 xSemaphoreGive()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - 60 
4.14 xSemaphoreGiveFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -61 
4.15 xSemaphoreGiveRecursive()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - 62 
4.16 xSemaphoreTake()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - 63 
4.17 xSemaphoreTakeFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - -64 
4.18 xSemaphoreTakeRecursive()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -64 
第五章  软件定时器 API 函数    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - 66 
5.1 xTimerChangePeriod()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - -66 
5.2 xTimerChangePeriodFromISR()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -67 
5.3 xTimerCreate()    - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - -67 
5.4 xTimerCreateStatic()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - -69 
5.5 xTimerDelete()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - -70 
5.6 xTimerGetExpiryTime()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - -71 
5.7 pcTimerGetName()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - 71 
5.8 xTimerGetPeriod()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -71 
5.9 xTimerGetTimerDaemonTaskHandle()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - --71 
5.10 pvTimerGetTimerID()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - 72 
5.11 xTimerIsTimerActive()    - - - - - - - - - - - - - - - - - - - -- - - - -- - - - - - - -- - - - - - - - - -72 
5.12 xTimerPendFunctionCall()    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - -- - -72 
5.13 xTimerPendFunctionCallFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -73 
5.14 xTimerReset()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - 74 
5.15 xTimerResetFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - -75 
5.16 vTimerSetTimerID()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - -76 
5.17 xTimerStart()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - -76 
5.18 xTimerStartFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - 76 
5.19 xTimerStop()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - -77 
5.20 xTimerStopFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - 77 
第六章  事件组 API 函数    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - -79 
6.1 xEventGroupClearBits()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - 79 
6.2 xEventGroupClearBitsFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - 79 
6.3 xEventGroupCreate()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - 80 
6.4 xEventGroupCreateStatic()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - 81 
6.5 vEventGroupDelete()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - 81 
6.6 xEventGroupGetBits()    - - - - - - - - - - - - - - - - - - - -- - - - - -- - - - - - - - - - - -- - - - - -81 
 
3 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
6.7 xEventGroupGetBitsFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -81 
6.8 xEventGroupSetBits()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - -82 
6.9 xEventGroupSetBitsFromISR()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -82 
6.10 xEventGroupSync()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - 83 
6.11 xEventGroupWaitBits()    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - -85 
第七章  FreeRTOS 内核配置    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - -87 
7.1 FreeRTOSConfig.h 头文件    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - -87 
7.2  以“INCLUDE_”开头的常量    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - -87 
7.3  以“config”开头的常量    - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - 87 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
第一章   初识 FreeRTOS 
基本概念: 
User mode:用户模式(又叫非特权模式);   
Supervisor mode:管理模式(亦叫特权模式)。 
 
FreeRTOS API 函数限制条件 
1.  不是以“From ISR”结尾的 API 函数禁止在中断服务中调用;即使一些以“From 
ISR ” 结 尾 的 API 函 数 , 当 中 断 服 务 的 优 先 级 高 于
configMAX_SYSCALL_INTERRUPT_PRIORITY(
或
configMAX_API_CALL_INTERRUPT_PRIORITY)时,也不能在中断服务中调用。 
2.  当调度器被挂起时,可能导致上下文切换的 API 函数禁止被调用。 
3.  可能导致上下文切换的 API 函数禁止从临界区调用。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
第二章  任务和调度器 API 函数 
 
调用本章 API 函数需要添加头文件: 
#include “FreeRTOS.h” 
#include “task.h” 
 
2.1 void    portSWITCH_TO_USER_MODE( void ) 
此函数仅针对高级用户,且仅与 FreeRTOS MPU 端口相关。MPU 限制任务
是由 xTaskCreateRestricted()创建的,xTaskCreateRestricted()的参数决定正在创建
的任务是否是一个用户(非特权)模式任务,或者是一个管理员(特权)模式任务。
一个管理模式任务调用 portSWITCH_TO_USER_MODE(  )将其从一个管理模式
任务转换为一个用户模式的任务;却没有与此对等的函数(允许一个任务将自己
由用户模式转换为管理模式)。 
2.2  Void  vTaskAllocateMPURegions(TaskHandle_t      xTaskToModify,const 
MemoryRegion_t * const xRegions ) 
定义一组内存保护单元(MPU)区域,供 MPU 受限任务使用。此函数仅针对
高级用户,且仅与 FreeRTOS  MPU 端口相关。当使用 xTaskCreateRestricted()创
建任务完成,MPU 控制的内存区域可以被分配到 MPU 受限的任务中。在使用
vTaskAllocateMPURegions()函数运行时,这些区域可以被重新定义(或分配)。 
参数: 
xTaskToModify,将被更改的受限任务句柄。任务句柄是通过 xTaskCreateRestricted()
函数的 pxCreatedTask 参数获得的。任务可以使用 NULL(空)任务句柄替代原来有
效的任务句柄来更改自己内存区域访问的定义。 
xRegions,MemoryRegion_t 结构体类型数组。数组中位置对应的数是通过常量
portNUM_CONFIGURABLE_REGIONS 定 义 的 。 Cortex-M3 内 核 的
portNUM_CONFIGURABLE_REGIONS 被 定 义 为 3. 数 组 中 的 每 个
MemoryRegion_t 结构都根据 xTaskToModify 参数定义了一个 MPU 内存供任务使
用。 
MemoryRegion_t 结构体 
 
ulParameters 定义了访问内存区域的方式,ulParameters 可以按位取或下列变量的
值:portMPU_REGION_READ_WRITE 
                  portMPU_REGION_PRIVILEGED_READ_ONLY 
                  portMPU_REGION_READ_ONLY 
                  portMPU_REGION_PRIVILEGED_READ_WRITE 
                  portMPU_REGION_CACHEABLE_BUFFERABLE 
                  portMPU_REGION_EXECUTE_NEVER 
2.3  BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) 
调用包含超时参数的 API 函数可以导致调用任务进入阻塞状态。在阻塞状
态下的任务要么是等待超时时间的结束,要么等待事件发生的超时,之后任务将
 
6 
FreeRTOS V9.0.0 API 中文手册 张振译 
2017 年12 月17 日   
自动离开阻塞状态并进入就绪状态。有许多这种情况,如: 
如果任务调用 vTaskDelay(),那么它将进入阻塞状态。直到指定的超时时间到,
任务将自动离开阻塞状态并进入就绪状态。 
如果任务调用 ulTaskNotifyTake(),当它的通知值为 0,将进入阻塞状态,直到接收
到一个通知值或者是超时时间到,函数将自动离开阻塞状态进入就绪状态。 
xTaskAbortDelay()将任务从阻塞状态转变到就绪状态。 
调度器不能调用处于阻塞状态的任务,处于阻塞状态的任务也不会占用 CPU
的任何处理时间。 
参数:xTask,需要中止延时的任务句柄。 
返回值:如果 xTask 任务退出阻塞状态,返回 pdPASS;如果 xTask 任务没有退出
阻塞状态(因为它之前是非阻塞状态),返回 pdFAIL。 
注 意 : 在 FreeRTOSConfig.h  中 将 INCLUDE_xTaskAbortDelay 设 为 1 时 ,
xTaskAbortDelay()函数才是可得的。 
2.4  BaseType_t  xTaskCallApplicationTaskHook(  TaskHandle_t  xTask,  void 
*pvParameters ) 
此函数仅针对高级用户。vTaskSetApplicationTaskTag()函数用来给任务分配一个
‘tag’值;‘tag’值的意义和使用由应用程序作者自己定义。FreeRTOS 内核正常情况
下不会访问这个‘tag’值。在特殊情况,使用‘tag’值将‘task  hook’(或回调函数)
与 一 个 任 务 进 行 关 联 。 这 样 做 时 , 钩 子 函 数 被 调 用 通 过 使 用
xTaskCallApplicationTaskHook()函数。任务钩子函数可用于任何目的。 
注意:在 FreeRTOSConfig.h  中将 configUSE_APPLICATION_TASK_TAG 设为 1 时,
xTaskCallApplicationTaskHook()函数才是可得的。 
参数: 
xTask,任务句柄。一个任务可以使用 NULL 句柄替换原来的有效句柄来调用该
任务自己的钩子函数。 
pvParameters,它作为任务钩子函数自己的参数。 
2.5  BaseType_t  xTaskCheckForTimeOut(  TimeOut_t  *  const  pxTimeOut, 
TickType_t * const pxTicksToWait ) 
此函数仅针对高级用户。xTaskCheckForTimeOut()与 vTaskSetTimeOutState()
一 起 使 用 ; 使 用 vTaskSetTimeOutState() 函 数 设 置 初 始 条 件 , 之 后 在 调 用
xTaskCheckForTimeOut()函数判断超时条件,如果没有发生超时则调整剩余块时
间。 
参数: 
pxTimeOut,该参数可以用 vTaskSetTimeOutState()初始化。 
pxTicksToWait,用于传递经过调整后的块时间(已经扣除在阻塞状态中消耗的时
间后剩余的时间)。 
返回值:如果返回 pdTRUE,说明没有块时间剩余,已经发生超时;如果返回
pdFALSE,说明有块时间剩余,还没有发生超时。 
2.6  BaseType_t xTaskCreate( TaskFunction_t    pvTaskCode, 
                                              const char * const    pcName, 
                                              unsigned short    usStackDepth, 
                                              void *pvParameters, 
                                              UBaseType_t    uxPriority, 
                                              TaskHandle_t *pxCreatedTask ) 
 
7